我有一个从模板生成的自动欢迎消息,每当创建一个新用户时(通过用户模型的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灯具进行测试时。
为什么会这样?加载灯具时模板加载器是否不存在?什么可以解决这个问题?
答案 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