Django并在服务器启动前加载配置文件

时间:2015-11-10 13:01:35

标签: django

我的django应用程序正在与外部服务器通信,在运行django服务器之前,我想加载一些配置文件。应用程序运行时,某些模块将使用此文件中的变量 问题是配置文件可以位于很多地方。

我的梦想是运行manage.py --cfg "/path/to/cfg/file.cfg"或     manage.py runserver --cfg "/path/to/cfg/file.cfg"  将要加载一些变量(如全局变量?),并且可以使用django模块。在django服务器关闭后,这些变量可以消失

有没有很好的方法来实现这个目标?干杯!

1 个答案:

答案 0 :(得分:1)

您的问题似乎有两个部分:

  1. 如何支持更改给定运行使用的变量集(如配置文件中所定义)

  2. 如何加载这些变量,使其对我的应用程序的所有模块都可见。

  3. 执行第二步的标准机制是将东西放入settings.py中。 如果您在settings.py中FOO="bar",则可以在模块中执行以下操作:

    from django.conf import settings
    
    if settings.FOO == "bar":
        # Do something
    

    至于你如何支持多种配置,我能想到的第一件事就是将你的真实settings.py重命名为real_settings.py,然后创建一系列config1_settings.py,config2_settings.py,config3_settings。 py ...看起来像:

    from real_settings.py import *
    from path_to_configX.py import *
    

    其中configX.py包含配置X所需的任何变量的所有值。

    然后您将通过以下方式启动django的内置服务器: manage.py runserver --settings=configX_settings.py

    请注意,为生产服务器执行此操作(您无法轻松地在命令行上传递某些东西以启动它)可能有点棘手,但您需要提供更多用例详细信息为此。