使用 mod_wsgi 在 Apache 上的 Django 中找不到 CSS 文件路径

Can not find CSS file path in Django on Apache with mod_wsgi

当 django 运行 在 apache 上使用 mod_wsgi.
时如何在 django 设置文件上写入 css 路径 我写的 apache 设置文件如下。

#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/

此别名命令适用于 CSS django 管理站点上的路径。
我为管理站点复制静态文件。
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 被 polls/templates/polls/views.py
使用 polls/templates/polls/views.py

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

我访问了本地主机。
但是,找不到 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 上使用静态文件?

你应该做类似的事情。

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.

希望一切顺利。