2012-11-24 385 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

謝謝你的提示。原料可能是要走的路。必須爲電子郵件添加額外的單獨測試。 –