【问题标题】:Django testing: TemplateDoesNotExist when loading fixtures. Why?Django 测试:加载夹具时的 TemplateDoesNotExist。为什么?
【发布时间】:2012-11-24 11:48:51
【问题描述】:

我有一个从模板生成的自动欢迎消息,每当创建新用户时都会发送该消息(通过 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 设备进行测试时。

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

【问题讨论】:

    标签: django unit-testing testing django-templates


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的提示。 Raw可能是要走的路。必须为电子邮件添加额外的单独测试。
    猜你喜欢
    • 2011-01-12
    • 2013-10-24
    • 2018-02-07
    • 1970-01-01
    • 2011-06-07
    • 2023-03-16
    • 1970-01-01
    • 2011-04-16
    • 2013-08-24
    相关资源
    最近更新 更多