【问题标题】:Django Deprecation: SignalsDjango 弃用:信号
【发布时间】:2019-12-27 21:05:29
【问题描述】:

信号会被弃用吗?我正在开始一个新的应用程序,我最初计划实现一些基于信号的功能,但一位同事告诉我,信号即将被弃用,我应该避免使用它们。 真的吗?我一直无法找到任何支持他的说法的消息来源。

【问题讨论】:

  • 弃用时间线 (docs.djangoproject.com/en/dev/internals/deprecation) 没有提到这一点,据我们所知,这些都没有被弃用。但是信号通常被过度使用。通常信号应该被用作最后的手段之一。特别是因为很多 Django ORM 调用规避信号。
  • @WillemVanOnsem 好的,谢谢!在诉诸信号之前,您通常会推荐哪些做法?我需要为用户实施通知。
  • 通常在视图中这样做可能会更好。特别是因为信号没有请求上下文。

标签: django django-rest-framework django-signals


【解决方案1】:

但一位同事告诉我,信号即将被弃用,我应该避免使用它们。这是真的吗?

在(遥远的)未来当然可能会出现这种情况。但是目前的Django Deprecation Timeline [Django-doc] 并没有提到这一点。唯一被删除的信号是disconnect 函数中的weak 参数。

话虽如此,Django 的信号通常在不需要时使用。几个 Django ORM 调用,例如 bulk_create(..),例如 circumvent 信号。因此,它给人一种错误的想法,即在创建新记录时将执行某些任务。例如,请参阅 this blog post [Lincoln Loop],它解释了为什么信号通常不是一个好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 2017-10-10
    相关资源
    最近更新 更多