【发布时间】:2016-07-27 15:15:28
【问题描述】:
我在部署的服务器(在 heroku 上)上设置我的 DEBUG = False 时遇到问题。
我不相信我以前见过这种情况,但是将 debug 设置为 false 并没有摆脱我的项目的调试模式。这意味着当有 500 个错误时它会显示错误,而 404 错误会显示我所有的 url。
奇怪的是,当我登录服务器并运行从django.conf import settings settings.DEBUG 获取设置值时,它显示为 False,这是我为生产服务器设置的值。 TEMPLATE_DEBUG 也设置为 False。
我不知道我以前在哪里见过DEBUG = False,但它仍在调试模式下运行。有什么想法吗?
编辑:
我想我也会写这个小注释,因为人们在将调试切换为 False 时遇到 500 或 400 个错误是很常见的。我没有收到任何错误,我的项目就像处于调试模式一样。
# settings/dev.py
from .base import *
DEBUG = True
TEMPLATE_DEBUG = DEBUG
if not DEBUG:
ALLOWED_HOSTS = ['localhost']
SECRET_KEY = 'localsecret1234123412341234'
# settings/prod.py
from .base import *
import dj_database_url, os
DEBUG = os.environ.get("DEBUG", False)
TEMPLATE_DEBUG = DEBUG
ALLOWED_HOSTS = ['mydomain.com']
SECRET_KEY = os.environ["DJANGO_SECRET_KEY"]
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
DATABASES = {}
DATABASES['default'] = dj_database_url.config()
【问题讨论】:
-
您可能希望提供完整的 settings.py 文件(减去任何秘密);此外,请提供有关如何将 DEBUG 设置为 false 并尝试使其生效的分步说明。
-
您是否正在运行本地和生产设置文件?有几件事——首先你需要提供你的设置文件——一旦你对调试进行了更改,你有没有重置?根据您在 Heroku 上的配置,它可能不会自动重置为 Django 应用程序提供服务的任何内容。最后,是否使用了任何环境变量?这可能会覆盖您的设置文件绑定。
-
添加了开发/产品设置。据我所知,heroku 正在重置。我不知道每次我上传任何更改它们都会生效。如果您需要查看完整的 settings/base.py,请告诉我,但问题是当我进入 ./manage.py shell 时,它显示 debug 为 False。
-
@JerryStratton 我在活动设置文件中设置了
DEBUG=False,然后在 manage.py shell 中验证它是否实际设置为 False。还转到我知道返回 404 的页面并查看它是否返回我的 404.html 模板或显示所有网址 -
@Withnail 我尝试使用
heroku restart手动重启,但行为相同
标签: django