我们对大部分项目都使用基于类的视图。当我们尝试创建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