首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >基于Django项目环境处理不同配置/设置的最佳方法

基于Django项目环境处理不同配置/设置的最佳方法
EN

Stack Overflow用户
提问于 2016-11-09 22:11:11
回答 3查看 1.9K关注 0票数 3

调试==错误是否意味着应用程序在生产环境中运行?

至少,这是我偶尔看到的在互联网上。但是我在settings.py里放了什么呢?好的,我可以把本地设置放到,比方说,settings_local.py,然后从settings.py导入它。但是,如果某些设置取决于环境,那么我必须将它们放在import语句之后。我越想越不喜欢。而你?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-09 22:15:39

作为对问题的答复:

调试==错误是否意味着应用程序在生产环境中运行?

DEBUG是您在setting.py文件中定义的配置。

  • 如果设置为True,在出现未处理异常的情况下,它将显示完整的堆栈跟踪以及所有声明变量的值。
  • 如果设置为False,则服务器只返回没有任何堆栈跟踪的500状态代码。

在生产中,必须将DEBUG设置为False,以防止潜在的安全漏洞风险,以及其他您不希望用户知道的信息。

为了在不同的环境中使用不同的settings配置,创建不同的设置文件。在部署脚本中,使用--settings=参数启动服务器,通过该参数,您可以在不同的环境中使用不同的设置。

使用这种方法的好处

  1. 您的设置将基于每个环境进行模块化。
  2. 您可以导入master_settings.py,其中包含environmnet_configuration.py中的基本配置,并覆盖要在该环境中更改的值。
  3. 如果您有庞大的团队,每个开发人员可能都有自己的local_settings.py,可以将其添加到代码存储库中,而不需要修改服务器配置。如果使用git或.hginore,则可以将这些本地设置添加到代码版本控制中。这样,本地设置甚至不会成为实际代码库的一部分,使其保持干净。
票数 4
EN

Stack Overflow用户

发布于 2016-11-10 02:46:23

使用django-配置定义一些可选配置,并在运行代码的每台计算机上设置环境变量DJANGO_CONFIGURATION以选择一个配置。

您可以任意定义类,但我建议定义一个Common类,它是所有继承的,然后是DevTestProd类。

任何涉及系统配置的内容都应该从环境变量(例如数据库连接、缓存连接等)中提取。

玩得开心!

票数 0
EN

Stack Overflow用户

发布于 2016-11-10 09:09:02

要添加到@匿名回答中,下面是我想出的脚本(manage.sh):

代码语言:javascript
代码运行次数:0
运行
复制
#!/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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40516873

复制
相关文章

相似问题

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