【问题标题】:Django Static Files in Production Using Whitenoise使用 Whitenoise 在生产中使用 Django 静态文件
【发布时间】:2017-04-30 22:31:45
【问题描述】:

首先为这篇文章的篇幅道歉。

我有一个在 Centos6 和 Apache 上运行的 django 项目,使用 C-Panel 插件安装 Django,我正在尝试在生产中提供静态文件。 我的项目使用 Django 1.9,我正在尝试使用 Whitenoise 来提供我的静态文件。

我的 settings.py 包含以下内容:

STATICFILES_STORAGE ='whitenoise.django.GzipManifestStaticFilesStorage'
STATIC_URL = '/static/'
STATIC_ROOT = STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'common-static'),

这是我的 MIDDLEWARE_CLASSES

 MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
)

这是我的 django 应用程序的 wsgi.py

import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
application = get_wsgi_application()

这是插件生成的:

import os
import sys
import site
vepath = '/home/mysite/virtualenv3.5/lib/python3.5/site-packages'
prev_sys_path = list(sys.path)
site.addsitedir(vepath)

sys.path.append('/home/mysite/djangosites/mysite')
from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE","mysite.settings"
application = get_wsgi_application()

我的 settings.py 中有 DEBUG = False。 当我运行 ./manage.py collectstatic 时,会收集文件,如果我使用 0.0.0.0:8000 运行服务器,则会找到静态文件。

我尝试将以下内容添加到两个 wsgi.py 文件中,但无济于事:

from whitenoise.django importDjangoWhiteNoise
application = DjangoWhiteNoise(application)

任何有关如何解决此问题的建议将不胜感激。

【问题讨论】:

  • 我忘了补充一点,我的 IP 目前只能通过我的笔记本电脑主机文件公开。

标签: django production


【解决方案1】:

这是一个较晚的回复,但它可能会帮助其他人寻找答案。

当您使用“whitenoise.middleware.WhiteNoiseMiddleware”时,您不必包含“django.middleware.security.SecurityMiddleware”。

另外,您不需要对 wsgi.py 进行任何更改。添加中间件将为您处理一切。

【讨论】:

    猜你喜欢
    • 2021-11-03
    • 2018-06-02
    • 2020-03-01
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2017-03-05
    • 2021-06-06
    相关资源
    最近更新 更多