Django测试:加载灯具时的TemplateDoesNotExist。为什么?

时间:2012-11-24 11:48:52

标签: django unit-testing testing django-templates

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

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灯具进行测试时。

为什么会这样?加载灯具时模板加载器是否不存在?什么可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

我不知道为什么这个模板有问题(它对我有用),但可能在灯具加载过程中你不想生成这个电子邮件。在这种情况下,您可以使用带有信号的raw参数。来自Django关于raw的文档:

  

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

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

@receiver(post_save, sender=User)
def generate_email(sender, instance, created, raw, **kwargs):
    if not raw:
        # generate email from template