【问题标题】:In Django, how can I prevent my signals import in AppConfig.ready() from running more than once?在 Django 中,如何防止我在 AppConfig.ready() 中导入的信号多次运行?
【发布时间】:2016-11-20 02:28:57
【问题描述】:

保持信号井井有条:

__init__.py

default_app_config = 'posts.apps.PostsConfig'

apps.py

from django.apps import AppConfig


class PostsConfig(AppConfig):
    name = 'posts'

    def ready(self):
        import posts.signals

如何确保ready()import posts.signals 只运行一次?

【问题讨论】:

  • ready()运行两次遇到什么问题?两次导入信号应该不会导致任何问题。
  • @solarissmoke 您对答案的编辑是我正在寻找的,谢谢。问题的上下文不同 - 这是请求帮助修复错误,这是基于文档的最佳实践问题。如果它已关闭,则不会大惊小怪,但在发布此之前,我找不到您对其他问题的答案。
  • @knbk 还没有问题,只是想知道如何解释它,因为文档说我应该没有示例。

标签: python django signals django-signals


【解决方案1】:
from django.apps import AppConfig


class PostsConfig(AppConfig):
    name = 'posts'
    ready_has_run = False

    def ready(self):
        if self.ready_has_run:
            return
        import posts.signals
        self.ready_has_run = True

【讨论】:

    猜你喜欢
    • 2016-02-22
    • 2020-03-05
    • 2018-11-22
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 2014-08-08
    • 2019-11-24
    • 1970-01-01
    相关资源
    最近更新 更多