html - 为什么 CSS 不能与 apache2+mod_wsgi+python3+bottle 一起工作?

标签 html css jinja2 python-3.3 bottle

背景:我正在尝试使用 ubuntu 服务器建立一个 Amazon EC2 实例。我已经为python3安装了Python3.3.2、mod_wsgi-3.5、apache2和bottle和jinja2。我可以使用所有这些组件来加载常规网页,例如它识别 jinja2 模板,并正确地将 python 代码中传递的变量插入到 html 文件中。此外,如果我更改 views/home.tmpl 中的 html有 <body bgcolor="#b0c4de">然后我得到合适的颜色。

问题:我想实现良好的抽象级别(一般学习 CSS),所以我希望我的页面有一个外部 CSS 来管理 HTML 页面属性等。但我无法让事情正常进行正确,我似乎无法弄清楚为什么。

代码的最小(非)工作示例:

我的目录结构是:

ubuntu@ip-172-31-47-7:/var/www/helloworld$ ls -lrtR
.:
-rw-rw-r-- 1 ubuntu   ubuntu    162 Feb  4 23:55 adapter.wsgi
-rwxrwxr-x 1 www-data www-data 1044 Feb  5 04:10 helloworld.py
drwxrwxr-x 3 www-data www-data 4096 Feb  5 04:14 views

./views:
drwxrwxr-x 2 ubuntu   ubuntu   4096 Feb  5 04:04 css
-rw-rw-r-- 1 www-data www-data  431 Feb  5 04:14 home.tmpl

./views/css:
-rw-rw-r-- 1 ubuntu ubuntu 34 Feb  5 04:04 homestyle.css

adapter.wsgi只是启动 bottle.default_app() 的包装器:

import sys, os, bottle
sys.path = ["/var/www/helloworld/"] + sys.path
os.chdir(os.path.dirname(__file__))
import helloworld
application = bottle.default_app()

helloworld.py也很简单:

from bottle import default_app, debug, get, post, request, route, run
from bottle import jinja2_template as template
from bottle import jinja2_view as view

@route("/hello")
def hello(name=None):
    return template('home.tmpl', name=name)

views/home.tmpl有一些特定于 jinja2 的代码,但是很短。注意 <link ...>线;我觉得这是我遇到麻烦的地方:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    <link rel="stylesheet" type="text/css" href="views/css/homestyle.css">
    {% block head %}
    <title>{% block title %} {% endblock %}Jinja2-Templated Webpage!</title>
    {% endblock %}
</head>
<body>
    {% if name is string: %}
    Hello {{ name.title() }}
    {% else: %}
    Hello world...
    {% endif %}
</body>

和我的 views/css/homestyle.css尽可能简单:

body {background-color: #b0c4de;}

我尝试将 homestyle.css 的位置移动到 views 中目录,或在“顶级”目录中(此处为 /var/www/helloworld);我也尝试在我的 href= 中使用不同的链接,包括绝对路径。一切都无济于事,我无法让这个 CSS 为我的网页着色。任何帮助是极大的赞赏!

最佳答案

如果可能,让 Apache 为您的 css 文件提供服务;不要把它放在 views 下。请记住,样式表的 href 是相对于网页的 URI,而不是 Bottle 运行的目录。

因此,如果您点击位于 http://myhost/hello 的页面,则使用:

<link rel="stylesheet" type="text/css" href="css/homestyle.css">

并将homestyle.css放入/var/www/helloworld/css/

希望对您有所帮助!

关于html - 为什么 CSS 不能与 apache2+mod_wsgi+python3+bottle 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21568780/

相关文章:

html - 为什么这个无序列表不是居中的?怎么了?

css - 按钮的奇怪边距

javascript - 悬停时的菜单驱动器效果

python - 如何创建 404 页面?

python - 删除 jinja 中的重复列表

ansible - 如何根据条件打破 with_items 循环

javascript - 使用 CSS 将圆移动到边框顶部

HTML CSS 换行时向上移动文本

javascript - 检索通过 POST 方法表单传递的值

jquery - 如何减小 jQuery UI 选项卡面板标题中的字体大小?