2015-01-17 28 views
1

如何在使用mod_wsgi在apache上運行django時在django設置文件中編寫css路徑。
我寫下如下的apache設置文件。
使用mod_wsgi無法在Apache上的Django中找到CSS文件路徑

#httpd.conf 
WSGIPythonHome /opt/python3.4 
WSGIPythonPath /opt/python3.4/bin/python3 
WSGIScriptAlias//usr/local/django/mysite/mysite/wsgi.py 
Alias /static/ /usr/local/django/mysite/mysite/static/ 

此別名命令用於django的管理站點上的CSS路徑。
我複製管理網站的靜態文件。
How to use Django with Apache and mod_wsgi

我正在使用django版本1.7和領先的教程爲1.7。
教程6是如何在django上使用靜態CSS和圖像文件。
我的Django的文件樹如下

mysite 
- manage.py 
+ mysite 
    - settings.py 
    + static 
    - urls.py 
    - wsgi.py 
+ polls 
    - admin.py 
    - models.py 
    + templates 
    + polls 
     - index.html 
    - urls.py 
    + static 
    + polls 
     - style.css 
    - views.py 

的mysite/settings.py

PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__)) 
STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(PROJECT_ROOT,'static') 

style.css中所使用的民調/模板/調查/ views.py
調查/模板/ polls/views.py

{% load staticfiles %} 
<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" /> 

我訪問了localhost。
但是,用於民意調查的CSS文件未找到。 (localhost/static/polls/style.css)
如果我修改httpd.conf文件如下。

WSGIPythonHome /opt/python3.4 
WSGIPythonPath /opt/python3.4/bin/python3 
WSGIScriptAlias//usr/local/django/mysite/mysite/wsgi.py 
Alias /static/ /usr/local/django/mysite/polls/static/polls/ 

它可以在輪詢應用程序上使用靜態文件。
但是,在這種情況下,我找不到管理站點的靜態文件。
我想在管理網站和我的應用程序上使用靜態文件。
如何使用mod_wsgi在apache上使用靜態文件?

+0

我認爲你應該將'STATIC_ROOT'設置爲項目外的目錄,相應地調整httpd.conf,然後運行'manage.py collectstatic' https://docs.djangoproject.com/en/1.7/ref/contrib/ staticfiles /#django-admin-collectstatic – Anentropic

+0

我執行收集靜態。 這是工作。謝謝, – Edama

回答

2

你應該這樣做。

Alias /static/ /path/to/your/STATIC_ROOT/directory/ 

<Directory /path/to/your/STATIC_ROOT/directory> 
    Require all granted 
</Directory> 

在httpd.conf, 您應該運行./manage.py collectstatic,使你的所有靜態文件+ Django管理靜態文件被收集在STATIC_ROOT目錄。

然後打開你的主要urls.py,並在年底

from settings import STATIC_ROOT 
if conf.DEBUG == True: 
    urlpatterns = patterns('', 
     url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': STATIC_ROOT}), 
    ) + urlpatterns 

添加這些行添加這些行到您的settings.py

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'polls/static'), 
) 

,並經過docs

我希望事情現在能夠奏效。

+1

值得注意的是'django.views.static。serve',雖然有用,但僅供開發人員使用,即使用Django runserver ...如果設置Apache + mod_wsgi,您通常希望Apache爲靜態文件提供服務,而不是更快速和更安全 – Anentropic