【发布时间】:2014-02-07 11:54:16
【问题描述】:
背景:我正在尝试使用 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 正在分发文件 - 所以任何静态内容可能仍然位于 apache 服务器下。
标签: html css jinja2 python-3.3 bottle