Фон: Я пытаюсь встать на экземпляр Amazon EC2, используя сервер ubuntu. Я установил Python3.3.2, mod_wsgi-3.5, apache2, и бутылку и jinja2 для python3. Я могу получить обычную веб-страницу для загрузки с использованием всех этих компонентов, например. он распознает шаблоны jinja2 и правильно интерполирует переменные, переданные в код python, в html-файлы. Кроме того, если я изменю html в views/home.tmpl
, чтобы получить <body bgcolor="#b0c4de">
, тогда я получаю соответствующий цвет.Почему CSS не работает с apache2 + mod_wsgi + python3 + bottle?
Проблема: Я хочу реализовать хороший уровень абстракции (и изучать CSS в целом), поэтому я хочу, чтобы мои страницы имели внешний CSS для управления атрибутами HTML-страницы и т. Д. Но я не могу заставить вещи работайте правильно, и я не могу понять, почему.
Minimum (не) рабочий пример кода:
Моя структура каталогов:
[email protected]:/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 окрасить мою веб-страницу. Любая помощь очень ценится!
Это похоже на дубликат http://stackoverflow.com/questions/10486224/bottle-static-files – Trent
ОК, я попытаюсь просеять это и выяснить, что происходит; мне это не сразу понятно, но, возможно, мне нужно потратить (даже) больше времени на чтение документации. благодаря! – dwanderson
Вы видите, apache выдает файлы - поэтому любой статический контент, вероятно, все еще должен сидеть под сервером apache. – Trent