我們對大部分項目都使用基於類的視圖。當我們嘗試創建CSV Mixin時,我們遇到了一個問題,它允許用戶將信息從幾乎任何頁面導出爲CSV文件。我們特別的問題涉及CSV文件,但我相信我的問題足以與任何文件類型相關。通過Django Class Based Views發送文件
我們遇到的問題是來自視圖的響應正試圖去模板(比如from django.views.generic import TemplateView
)。我們在urls.py
文件中指定模板。
url(r'^$', MyClassBasedView.as_view(template_name='my_template.html'))
如何強制響應繞過模板並返回標準HttpResponse
?我猜你需要重寫一個方法,但我不確定哪一個。
有什麼建議嗎?
編輯1:看起來我不清楚我們正在做什麼。我已經呈現了一個頁面(通過基於類的視圖),用戶將看到信息報告。我需要輸入一個按鈕「導出爲CSV」供用戶按下,它將導出他們頁面上的信息並將CSV下載到他們的機器上。
這不是一種將視圖重寫爲基於方法的視圖的選項。我們在處理與基於幾乎所有類視圖類型(的DetailView,ListView中,TemplateView,景觀,RedirectView的,等等)
你可以創建一個CSVResponseMixin類,並且在'render_to_response'方法中它包含檢測它是否應該返回一個CSV與我們應該正常工作的邏輯所需的邏輯 – dm03514 2013-04-29 19:49:29