우리는 대부분의 프로젝트에 클래스 기반 뷰를 사용합니다. 우리는 사용자가 거의 모든 페이지의 정보를 CSV 파일로 내보낼 수있는 CSV Mixin을 만들려고 할 때 문제가 발생했습니다. 우리의 특별한 문제는 CSV 파일을 다룹니다. 그러나 제 질문은 어떤 파일 유형과도 관련이있을 정도로 일반적인 질문이라고 생각합니다.Django 클래스 기반 뷰를 통해 파일 전송
우리가 겪고있는 문제는보기의 응답이 템플릿 (예 : 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,보기, 만약 RedirectView 등)
당신은 CSVResponseMixin 클래스를 생성 할 수 있으며'render_to_response' 메소드에는 CSV를 반환해야하는지 여부를 감지하는 데 필요한 로직이 포함되어 있습니다. 정상적으로 작동해야합니다. – dm03514