【问题标题】:Can not find CSS file path in Django on Apache with mod_wsgi使用 mod_wsgi 在 Apache 上的 Django 中找不到 CSS 文件路径
【发布时间】:2015-03-15 23:57:17
【问题描述】:

django 使用 mod_wsgi 在 apache 上运行时如何在 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/

此别名命令用于 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 被 polls/templates/polls/views.py 使用
民意调查/模板/民意调查/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 上使用静态文件?

【问题讨论】:

标签: python css django apache mod-wsgi


【解决方案1】:

你应该做类似的事情。

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 admin 静态文件收集在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

我希望现在一切顺利。

【讨论】:

  • 值得注意的是,django.views.static.serve 虽然有用,但仅供开发人员使用,即与 Django 运行服务器一起使用...如果设置 Apache + mod_wsgi,您通常希望 Apache 提供静态服务文件,更快,更安全
猜你喜欢
  • 1970-01-01
  • 2017-09-03
  • 2023-03-25
  • 2011-12-07
  • 2013-07-09
  • 2018-10-24
  • 2014-05-11
  • 1970-01-01
  • 2019-06-14
相关资源
最近更新 更多