【问题标题】:How to set specific settings in Django from a global settings module如何从全局设置模块在 Django 中设置特定设置
【发布时间】:2012-09-02 11:31:55
【问题描述】:

我们正在尝试确定最佳实践,以便为我们希望使用的不同环境(例如本地开发、登台和生产)设置 Django 设置。

仔细阅读,我们发现使用了两种主要的技术

  1. settings_local.py 文件,未版本化,在主 settings.py 文件末尾导入

  2. settings模块方式,settings变成python模块,具体的env.py文件在里面source here

我们更喜欢第二种方式,因为它看起来非常模块化和“python”方式,但是,作为指南仍然不完整,如何说 Django 为每个不同的环境使用哪个模块?

您认为这是管理 Django 设置的好方法吗?

谢谢大家。

【问题讨论】:

    标签: python django module settings


    【解决方案1】:

    同时使用这两种方法也很正常。例如,您可以在每台开发人员机器上拥有不同的环境,如“开发”、“暂存”、“生产”和仅限本地设置。

    通常,settings_local.py 只是在 settings.py 的末尾从当前目录(或用于配置文件的特殊目录)导入。

    为了管理不同的环境,我们使用env 变量。它看起来像这样:

    $ export MY_PROJECT_ENV=production
    $ python
    >>> import os
    >>> os.environ["MY_PROJECT_ENV"]
    'production'
    

    settings.py 中看起来像

    ENV = os.environ.get("MY_PROJECT_ENV", "production")
    LOGGING_LEVEL = "debug" if ENV == "development" else "error"
    

    要使用export 进行更方便的操作,您可以将所有此类导出添加到您的~/.profile(或类似的功能文件)。

    【讨论】:

    • 感谢您的回复,这是一个有趣的方法,但是我应该如何设置变量,例如在生产服务器上?最后,您是否也知道如何设置每个特定的 env 一旦设置了方法 #2 中的设置模块?
    • @caruso_g 在我的回答中,我描述了如何在服务器上导出变量。第二个问题我不清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 2018-12-09
    相关资源
    最近更新 更多