【发布时间】:2013-04-29 19:27:53
【问题描述】:
我们的大部分项目都使用基于类的视图。当我们尝试创建一个 CSV Mixin 时,我们遇到了一个问题,它允许用户将几乎任何页面的信息导出为 CSV 文件。我们的特殊问题涉及 CSV 文件,但我相信我的问题足够笼统,可以与任何文件类型相关。
我们遇到的问题是视图的响应试图转到模板(比如from django.views.generic import TemplateView)。我们在urls.py 文件中指定模板。
url(r'^$', MyClassBasedView.as_view(template_name='my_template.html'))
如何强制响应绕过模板而只返回标准HttpResponse?我猜你需要重写一个方法,但我不确定是哪一个。
有什么建议吗?
EDIT1:我似乎不清楚我们要做什么。我已经呈现了一个页面(通过基于类的视图),用户将看到信息报告。我需要添加一个“导出为 CSV”按钮供用户按下,它将导出他们页面上的信息并将 CSV 下载到他们的机器上。
将我们的视图重写为基于方法的视图不是一种选择。我们处理几乎所有基于类的视图类型(DetailView、ListView、TemplateView、View、RedirectView 等)
【问题讨论】:
-
你可以创建一个 CSVResponseMixin 类并在
render_to_response方法中包含必要的逻辑来检测它是否应该返回一个 CSV 与它是否应该正常运行
标签: python django download django-class-based-views