簡體   English   中英

為什么CSS無法與apache2 + mod_wsgi + python3 + bottle一起使用?

[英]Why isn't CSS working with apache2+mod_wsgi+python3+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/

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM