Skip to main content
 首页 » 编程设计

python之Django,在wsgi.py中使用条件设置模块

2024年08月27日35wayfarer

我正在为我的 Django 项目使用设置模块而不是单个设置文件。这意味着在我的 wsgi.py 文件中我有这样的东西:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.prod") 或者 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.dev")

取决于我的环境。我真的很想能够在配置文件中设置一个变量,这样我就不必在每次推送到产品时都进入这个文件并更改它。

你是说没什么大不了的?好吧,很容易忘记然后繁荣我的应用程序是不安全的,因为它在开发设置上。我还会在我的应用程序的其他地方使用这个配置变量,所以我有一个“全局”标志,可以将我的应用程序设置为生产或开发设置。

请您参考如下方法:

这个方法怎么样,创建三个设置文件:

  • settings.py(主)
  • settings_dev.py(覆盖开发服务器的一些设置)
  • settings_prod.py(覆盖生产服务器的一些设置)

在 settings.py 文件的末尾检查如果 DEBUG=True 然后导入 settings_dev.py 否则 settings_prod.py:

设置.py:

---- 
try: 
    if DEBUG: 
        from settings_dev import * 
    else: 
        from settings_prod import * 
except ImportError: 
    pass 

使用这种方法你只需要设置:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 

现在不要说如果我忘记更改特定服务器的 DEBUG 值会怎样。然后另一个解决方案是有两个单独的存储库在 git 忽略列表中添加 settings_prod.py 用于开发存储库,并在 git 忽略列表中添加 settings_dev.py 用于生产。始终在 settings_prod.py 中设置 DEBUG=False 并在 settings.py 文件中设置 DEBUG=True,然后在settings.py 文件的末尾执行此操作:

try: 
    from settings_dev import * 
except ImportError: 
    try: 
        from settings_prod import * 
    except ImportError: 
        pass