在 Django 1.9 中使用信号

2024-05-02

在 Django 1.8 中,我能够使用信号执行以下操作,一切顺利:

__init__.py:

from .signals import *

信号.py:

@receiver(pre_save, sender=Comment)
def process_hashtags(sender, instance, **kwargs):
    html = []
    for word in instance.hashtag_field.value_to_string(instance).split():
        if word.startswith('#'):
            word = render_to_string('hashtags/_link.html',
                                    {'hashtag': word.lower()[1:]})

        html.append(word)
        instance.hashtag_enabled_text = ' '.join(html)

在 Django 1.9 中,我收到此错误:django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

我知道它来自__init__.py,但有人知道解决方法吗?我想也许可以把它放入模型中?如果是这样,有人可以告诉我该怎么做吗?

模型.py:

class Comment(HashtagMixin, TimeStampedModel):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    text = models.TextField(max_length=240)
    hashtag_enabled_text = models.TextField(blank=True)
    hashtag_text_field = 'text'

    objects = CommentManager()

    class Meta:
        app_label = 'comments'

    def __unicode__(self):
        return self.text

先感谢您!


来自发行说明 https://docs.djangoproject.com/en/1.9/releases/1.9/#features-removed-in-1-9:

所有模型都需要在已安装的应用程序内定义或声明显式的 app_label。此外,在加载应用程序之前不可能导入它们。特别是,无法在应用程序的根包中导入模型。

通过将您的信号导入__init__.py,您将间接导入应用程序的根包中的模型。避免这种情况的一种选择是更改sender到一个字符串:

@receiver(pre_save, sender='<appname>.Comment')
def process_hashtags(sender, instance, **kwargs):
    ...

连接使用的信号的推荐方法@receiver1.9 中的装饰器是创建一个应用程序配置 https://docs.djangoproject.com/en/1.9/ref/applications/#application-configuration,并导入信号模块AppConfig.ready().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Django 1.9 中使用信号 的相关文章

随机推荐

  • Markdown/Github:作为列表子项的代码块的语法突出显示

    在Github MD中 如果我们想在列表的子级时启用代码块 我们需要用8个空格来表示它 但是如何让该代码块具有语法高亮功能呢 以下代码无法按预期工作 1 foo python print bar 2 bar python print bar
  • 如何使用 RestTemplate 禁用编码

    我正在使用 REST 模板有意在请求 uri 中发送 例如 items a b String responseEntity restTemplate exchange items a b requestObj getHttpMethod r
  • angular.isdefine 有什么好处?

    有什么好处angular isdefined超过和超过foo undefined 我一时想不出有什么好处 在 Javascript 中以任何方式访问真正未定义的变量 除了 typeof 都会抛出错误 你只能使用Angular isDefin
  • AWS ECS 重启策略

    我检查了在 ECS 集群中运行的一个 docker 容器 它的重启策略为空白 HostConfig RestartPolicy Name 我不确定 ECS 在发生故障时会做什么 但我想将策略更改为在实例中运行的 cmd 失败时重新启动容器实
  • 如何使用 JavaScript 或 jQuery 获取 html 元素的比例值?

    我想知道如何获得元素的比例值 我努力了 element css webkit transform 返回matrix scaleX 0 0 scaleY 0 0 有没有办法得到scaleX and scaleY only 找出文档和元素之间的
  • PrimaryContext如何登录域服务器

    我有以下 C 代码 用于连接到我的域服务器并对其执行一些操作 我的计算机上一切正常 我可以正常运行所有命令 我的问题是 连接服务器使用什么凭据 我假设它使用当前用户的凭据 所以我真正的问题是这对普通用户有效吗 我是管理员 它在我的机器上运行
  • 如何为 HTML 验证提供自定义验证错误消息?

    当我使用默认 HTML 验证时 它会显示默认错误消息 这不是我想向客户显示的 我需要自定义消息并为每个验证提供不同的信息 例如最小 最大 类型和要求 例如 该字段为必填项 值不匹配 参考传统的HTML代码
  • 将数据发送到 parse.com 并更新 Angular $scope

    我正在将数据发送到 parse com 上的类 我想运行此函数并更新 scope无需重新加载视图 创建一个Programme运行下面的函数工作正常 但是有时在创建新程序后不会更新视图 并且需要刷新页面 当调用整个函数时 如底部所示 getP
  • 如何在 Objective-C 中创建委托?

    我知道代表如何工作 也知道如何使用它们 但我该如何创建它们呢 Objective C 委托是一个已分配给delegate属性另一个对象 要创建一个 您需要定义一个实现您感兴趣的委托方法的类 并将该类标记为实现委托协议 例如 假设您有一个UI
  • Spark parquet 分区:大量文件

    我正在尝试利用 Spark 分区 我试图做类似的事情 data write partitionBy key parquet location 这里的问题是每个分区都会创建大量镶木地板文件 如果我尝试从根目录读取 则会导致读取速度变慢 为了避
  • 使用 javascript onClick 播放 mp3 文件

    我正在播放 mp3 文件 只是 javascript onClick 下面是我的代码 Music File 1
  • 检测已退款的托管应用内购买 android IAP 2.0.3

    我无法弄清楚如何使用 Android 检测何时为托管 不可消费 应用内产品发放退款com android billingclient billing 2 0 3 这个问题似乎相当深 尽管我可能让它变得比应有的更复杂 首先 我进行了一次测试购
  • IdentityServer4 - 直接从外部提供商登录

    我已经实现了从 Azure AD 登录的选项 我使用的客户端类型是混合型 因此 现在 当用户在我的应用程序上输入受限控制时 他将被重定向到登录页面 在 IdentityServer 应用程序站点上 他可以在其中输入用户名和密码 也可以使用
  • 使用 Ref 作为 Fn::Sub 内部函数中的第一个参数

    我在编译模板时遇到了非常奇怪的问题 我在其中引用了一个字符串参数Fn Sub 而docs http docs aws amazon com AWSCloudFormation latest UserGuide intrinsic funct
  • 为什么没有 styleMask:NSTitledWindowMask 的 NSWindow 不能成为 keyWindow?

    问题 我有一个窗口 mainWindow 和另一个窗口childWindow添加到mainWindow childWindow 是一种WindowExt班级 我为 catch 方法调用定义了这个类 NSWindow becomeKeyWin
  • Flutter Firestore 日期

    我知道这是重复的 但由于我无法找到正确的方法 所以请不要将其标记为重复 我想将日期类型正确设置为Firestore扑腾中 我试过DateTime now 但是当我检索它时错误说 不支持的值 FIRTimestamp FIRTimestamp
  • 我应该担心“窗口未定义”JSLint 严格模式错误吗?

    这不会在严格模式下通过 JSLint use strict function w w alert w window 来自 jslint com 的错误如下所示 第 4 行第 3 行字符出现问题 window 未定义 window 隐含全局
  • 在锁定屏幕上显示 UWP 控件

    我做了什么 我得到的要求是用户需要能够通过 Windows 锁定屏幕启动我的应用程序 搜索 www 后发现 从锁定屏幕连接热键非常困难 如果不是不可能的话 然后我发现这个帖子 https stackoverflow com question
  • 为什么使用散列而不是点来选择 Scala 类型成员?

    在 Scala 中 从类中选择类型的语法与从类中选择其他任何内容的语法不同 因为前者使用散列而不是点作为选择运算符 这是为什么 示例 如果我们有这样的课程 class Example type Foo String 为什么我们要从这样的类中
  • 在 Django 1.9 中使用信号

    在 Django 1 8 中 我能够使用信号执行以下操作 一切顺利 init py from signals import 信号 py receiver pre save sender Comment def process hashtag