【问题标题】:Run some initialization code when Django (1.9) loads在 Django (1.9) 加载时运行一些初始化代码
【发布时间】:2016-12-17 03:28:03
【问题描述】:

我看到从 1.7 开始有 https://docs.djangoproject.com/en/dev/ref/applications/#django.apps.AppConfig.ready,但这是每个每个应用程序

我正在寻找的是一种在加载 Django 时调用一些初始化代码的方法,而不管它包含哪些应用程序。 许多人建议将代码添加到 wsgi.py、urls.py 和 settings.py,但是所有这些方法都是“脏”的。

我的情况是我有几个应用程序可能是 Django 部署的一部分,我希望任何子集都有这个初始化代码。 我可以编写一个特殊通用应用程序,但我认为必须有一种 Django 方式来提供初始化代码。

【问题讨论】:

    标签: python django


    【解决方案1】:

    在较新版本的 Django 中,您通常有一个项目目录,其中包含全局的、独立于应用程序的文件,例如 settings.pywsgi.py。您可以将全局初始化代码添加到该目录下的__init__.py

    请注意,此代码运行得非常早(甚至在加载设置之前),因此 Django API 的某些部分尚不可用。

    【讨论】:

    • 我猜这个方法不允许我从数据库中初始化一些数据结构,但可以从文件中初始化。有没有更清洁的方法?
    • @mibm 您需要更具体。你想执行什么样的数据库初始化?根据您的问题,代码应该独立于任何应用程序,因此您无法访问任何模型。我想知道您想在不访问模型的情况下对数据库做什么。如果您询问特定用例,我们可能会为您提供帮助。
    • Marmach - 我正在考虑从文件中加载一些数据结构(字典)。确实,如果该数据结构将驻留在数据库中,那么您是正确的,我将需要访问模型...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2013-12-11
    • 2017-09-24
    • 1970-01-01
    相关资源
    最近更新 更多