CSV形式のリストビューでオブジェクトをダウンロードする簡単な方法を作成できるようにするために、ミックスインでクラスベースのビューを使用するDjangoドキュメントの例を採用しようとしていますが、惨めに失敗していて、実際には何がわかりません私は間違っています。
次のように定義されたビューがあります。
class MyObjectList(CSVResponseMixin,
MultipleObjectTemplateResponseMixin,
BaseListView
):
object_type = None
def get_context_data(self, **kwargs):
object_type = self.object_type
...some code...
return context
def render_to_response(self, context, **kwargs):
if self.request.GET.get('format', '') == 'csv':
return CSVReponseMixin.render_to_response(self, context, **kwargs)
else:
return MultipleObjectTemplateResponseMixin.render_to_response(self, context, **kwargs)
ミックスインは次のとおりです。
class CSVResponseMixin(object):
def render_to_response(self, ctx, **kwargs):
return self.HttpResponse.render_to_response(self.convert_to_csv(ctx), **kwargs)
def conver_to_csv(ctx):
return do_csv_magic(ctx)
ビューでurls.py
は次のように呼び出されます。
url(r'^list/foos/$',
MyObjectList.as_view(object_type="someobject", model=models.MyModel),
name="myobjects",
)
ただし、クエリなしでビューにアクセスしようとすると、?format=csv
TypeError
Exception Value: __init__() got an unexpected keyword argument 'request'
Exception Location: /usr/lib/python2.6/site-packages/django/views/generic/base.py in render_to_response, line 97
編集:私は質問にいくつかの詳細を追加し、これを別のアプローチで実装することになりましたが、それでも私が間違っていたことを知りたいです。