0

我有一条从模板生成的自动欢迎消息,每当创建新用户时都会发送该消息(通过 User 模型的 post_save 信号)。一切正常,除非我运行 manage.py 测试。

Django 一直在抱怨:

Problem installing fixture '.../lib/python2.7/site-packages/django/contrib/auth/fixtures/context-processors-users.xml ... TemplateDoesNotExist users/email_welcome.html

尝试加载 django.contrib.auth 固定装置进行测试时。

为什么会这样?加载夹具时模板加载器不存在吗?有什么办法可以解决这个问题?

4

1 回答 1

0

我不知道为什么这个模板有问题(它对我有用),但可能在装置加载期间你不想生成这封电子邮件。在这种情况下,您可以使用raw随信号发送的参数。来自 Django 文档raw

一个布尔值;如果模型完全按照呈现方式保存(即加载夹具时),则为真。不应查询/修改数据库中的其他记录,因为数据库可能尚未处于一致状态。

所以你的代码应该是这样的:

@receiver(post_save, sender=User)
def generate_email(sender, instance, created, raw, **kwargs):
    if not raw:
        # generate email from template
于 2012-11-24T17:43:25.410 回答