调试==错误是否意味着应用程序在生产环境中运行?
至少,这是我偶尔看到的在互联网上。但是我在settings.py
里放了什么呢?好的,我可以把本地设置放到,比方说,settings_local.py
,然后从settings.py
导入它。但是,如果某些设置取决于环境,那么我必须将它们放在import
语句之后。我越想越不喜欢。而你?
发布于 2016-11-09 14:15:39
作为对问题的答复:
调试==错误是否意味着应用程序在生产环境中运行?
DEBUG
是您在setting.py
文件中定义的配置。
True
,在出现未处理异常的情况下,它将显示完整的堆栈跟踪以及所有声明变量的值。False
,则服务器只返回没有任何堆栈跟踪的500
状态代码。在生产中,必须将DEBUG
设置为False
,以防止潜在的安全漏洞风险,以及其他您不希望用户知道的信息。
为了在不同的环境中使用不同的settings
配置,创建不同的设置文件。在部署脚本中,使用--settings=
参数启动服务器,通过该参数,您可以在不同的环境中使用不同的设置。
使用这种方法的好处
master_settings.py
,其中包含environmnet_configuration.py
中的基本配置,并覆盖要在该环境中更改的值。local_settings.py
,可以将其添加到代码存储库中,而不需要修改服务器配置。如果使用git或.hginore
,则可以将这些本地设置添加到代码版本控制中。这样,本地设置甚至不会成为实际代码库的一部分,使其保持干净。发布于 2016-11-09 18:46:23
使用django-配置定义一些可选配置,并在运行代码的每台计算机上设置环境变量DJANGO_CONFIGURATION
以选择一个配置。
您可以任意定义类,但我建议定义一个Common
类,它是所有继承的,然后是Dev
、Test
和Prod
类。
任何涉及系统配置的内容都应该从环境变量(例如数据库连接、缓存连接等)中提取。
玩得开心!
发布于 2016-11-10 01:09:02
要添加到@匿名回答中,下面是我想出的脚本(manage.sh
):
#!/usr/bin/env bash
DIR=$(dirname -- "$(readlink -f -- "$0")")
export PYTHONPATH="$DIR${PYTHONPATH:+:$PYTHONPATH}"
if [ -e <app>/local_settings.py ]; then
export DJANGO_SETTINGS_MODULE=<app>.local_settings
else
export DJANGO_SETTINGS_MODULE=<app>.settings
fi
django-admin "$@"
如果存在,则使用<app>.local_settings
。否则,它将返回到<app>.settings
。
或者,您只需编辑您的manage.py
。
https://stackoverflow.com/questions/40516873
复制