【问题标题】:Running startup code right after Django settings? (also for commands)在 Django 设置之后立即运行启动代码? (也适用于命令)
【发布时间】:2012-03-22 07:24:45
【问题描述】:

我正在使用mongoengine,并希望在设置后运行connect()(不在其中as suggested in its docs)。这实际上更像是一个一般性问题,如何在加载所有设置后立即运行代码。

更新:我也需要管理命令的解决方案。常见的方法是添加带有异常MiddlewareNotUsed 的中间件或将代码添加到root urls.py,但两者都不适用于命令。

【问题讨论】:

  • 看看下面的问题,应该会有帮助:stackoverflow.com/questions/2781383/…
  • 我刚刚做了,但它自动将答案转换为评论,并显示以下消息:“简单答案转换为评论”:)
  • @ustun:那是因为发布指向另一个 SO 问题的链接本身并不是一个答案。如果这个问题可以很容易地回答,那么它很可能是一个骗局,应该关闭。 (在这种情况下,OP 在技术上想要其他问题未涵盖的额外内容,这是我没有投票关闭它的唯一原因。)
  • 请注意,stackoverflow.com/questions/6791911/… 与 ustun 链接的答案相反:不要使用奇怪的中间件,而是将其放在 urls.py 中 :-)

标签: django settings signals


【解决方案1】:

启动类代码的正常位置是在 urls.py 中(当您需要已加载设置时)。 Django 对此还没有一个好地方。

(有一个 gsoc 学生在 2011 年从事的“应用程序重构”分支,但它还没有合并到核心 django 中。这个“应用程序重构”包括解决您的问题的解决方案,但这并没有帮不了你……)

您提到管理命令也需要它。那是你自己的管理命令吗?没有什么能阻止你在那里导入 urls.py,是吗?

可悲的是 Django 为数不多的弱点之一。幸运的是没有那么多:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    相关资源
    最近更新 更多