【发布时间】:2021-03-24 00:53:32
【问题描述】:
我正在用 Django 编写我的第一个 real 项目,但在开发和生产中正确设置 DEBUG 时遇到问题。在我的settings.py 项目文件中,我有:
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = os.environ.get('DJANGO_DEBUG', 'True') == 'True'
所以我希望它应该如下工作。默认情况下,DEBUG 设置为True(我在开发中使用它)。但是在我的生产服务器上,我有一个环境变量 DJANGO_DEBUG 设置为 "False" 所以 Django 应该将 DEBUG 设置为 False。
但这不起作用!当我转到my_website/notexistingurl 时,我看到 Django 详细错误页面,上面说我在我的settings.py 文件中将DEBUG 设置为True。为了让我完全不清楚,当我在服务器上打开一个 python shell 时,它说os.environ.get('DJANGO_DEBUG', 'True') == 'True' 是False。
有人知道我缺少什么吗?因为在我看来,这似乎是两件完全矛盾的事情!
【问题讨论】:
-
你有没有机会用 WSGI 设置一个变量?
-
服务器通常与 不同的 用户一起运行,这是为了避免可能接管网络服务器的人访问您的所有文件。因此,不是因为您为 your 用户设置了路径,它也是为网络服务器用户设置的。
-
话虽如此,以相反的方式实现它可能会更好,所以
DEBUG = os.environ.get('DJANGO_DEBUG', 'False') == 'True',这样你在显式设置时以调试模式运行,现在你只在显式设置时在生产中运行,但这风险更大。 -
谢谢@WillemVanOnsem。我想我现在知道该怎么做了。
标签: python django django-deployment