2012-11-24 155 views
0

我有一个从模板生成的自动欢迎消息,无论何时创建新用户(通过用户模型的post_save信号)都会发送该消息。除了当我运行manage.py测试时,一切都按照它应该的方式工作。Django测试:TemplateDoesNotExist加载灯具时。为什么?

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

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

回答

0

我不知道为什么这个模板有问题(它适用于我),但可能在加载过程中您不想生成此电子邮件。在这种情况下,您可以使用与信号一起发送的参数raw。 From Django docs about raw

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

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

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

谢谢你的提示。原料可能是要走的路。必须为电子邮件添加额外的单独测试。 –