首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django: Whitenoise没有在生产中调试false

Django: Whitenoise没有在生产中调试false
EN

Stack Overflow用户
提问于 2019-09-14 22:37:53
回答 1查看 3.4K关注 0票数 4

我有一个Django应用程序与whitenoise静态文件。但是当我用Google灯塔测试这个应用程序时,我会被要求为我的静态.js和.css文件启用文本压缩。

我读了很多相关的文章,但都找不到答案。

我还遵循了Heroku的指南来实现它。https://devcenter.heroku.com/articles/django-assets

设置

代码语言:javascript
复制
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

MIDDLEWARE = [
    '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.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django_user_agents.middleware.UserAgentMiddleware',
]

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

我也使用Dropbox的媒体文件,但似乎不是一个问题,我我删除它,我仍然有静态文件的问题。

代码语言:javascript
复制
DEFAULT_FILE_STORAGE = 'storages.backends.dropbox.DropBoxStorage'

需求

我确实在需求中包含了最新的Whitenoise,并且在部署Heroku时没有出错:

代码语言:javascript
复制
whitenoise==4.1.2

在灯塔进行测试时,会要求压缩这些文件。它们来自静态文件夹,当我运行Manage.py集合时,我知道它们应该被压缩。

代码语言:javascript
复制
…css/bootstrap.min.css(afternoon-wildwood-39943.herokuapp.com)
…js/jquery-3.2.1.min.js(afternoon-wildwood-39943.herokuapp.com)
…js/bootstrap-table.min.js(afternoon-wildwood-39943.herokuapp.com)
…css/Fran%20Style.css(afternoon-wildwood-39943.herokuapp.com)
…js/popper.min.js(afternoon-wildwood-39943.herokuapp.com)

调试设置

我读到,可能应该将调试设置为False,以使其正常工作。上面的例子是用Debug = True完成的。

代码语言:javascript
复制
DEBUG = bool(os.environ.get('DJANGO_DEBUG', True))

这个应用程序在这种情况下可以正常工作,但是如果将调试转换为False,我得到并错误了500页。

我要在Heroku主持。您可以在:http://afternoon-wildwood-39943.herokuapp.com/website/中尝试一个示例

有什么线索吗?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-16 19:36:30

感谢Heroku的支持,我找到了解决这个问题的方法。现在,我的应用程序运行良好,调试设置为false,我获得了whitenoise提供的Gzip静态文件。

集静态

首先,您应该在将应用程序部署到Heroku之前运行收集器命令,我一直认为这是部署后要做的事情。

Procfile

在procfile中,您应该添加以下代码:

代码语言:javascript
复制
release: python manage.py migrate
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57939784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档