gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 11:20:34 26 4
gpt4 key购买 nike

背景:我正在尝试使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com