2011-10-30 33 views
3

根據Django測試文檔,Django客戶端Response對象包含'templates',它是:「用於呈現最終內容的模板實例列表,按照它們的呈現順序對列表中的每個模板使用如果模板是從文件中加載的,則可以使用template.name來獲取模板的文件名(該名稱是一個字符串,例如'admin/index.html'。)「Django測試客戶端響應包含模板的空列表?

但是,我得到一個空的列表模板,儘管我相信模板已經呈現。

from django.test.client import Client 
c = Client() 
response = c.post('/signup/', {'email': '[email protected]', 'password1': 'smith', 'password2': 'smith'}, follow=True) 
print response.templates 
# [] 

爲什麼模板是空的?我如何看到模板被渲染?

回答

5

您是否在互動會話中嘗試過您的代碼? Django的documentation說:

雖然*你的代碼* [+]將在Python交互 解釋工作,一些測試客戶端的功能,特別是 模板相關的功能,僅可同時測試正在運行 。 之所以這樣做,是因爲Django的測試運行員執行了一些 黑魔法,以確定給定的 視圖加載了哪個模板。這個黑魔法(本質上是Django模板 在內存中的修補)只在測試運行時發生。

所以,如果你在測試運行中運行它,它應該工作。

[+]我已經取代了*上面的例子從Django文檔與代碼*使此片段的可讀性。

+0

是的,問題是我從交互式解釋器運行。 –