Django文档中的Django ListView mixin抛出一个错误,为什么

2024-10-01 11:27:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试采用Django documentation example on using class based views with mixins以便能够以CSV格式在列表视图中下载对象,但是我失败得很惨,我没有真正看到我做错了什么。在

我的观点是:

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)

mixin是:

^{pr2}$

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

编辑:我在问题中添加了一些细节,最后用不同的方法实现了这个问题,但我仍然想知道我做错了什么。在


Tags: toself视图returnobjectresponsedeftype
2条回答

总之,你做得太过分了。我不确定您的意图是什么,但我了解到最好的方法是找到最接近您要做的事情的通用视图,并简单地在views.py中扩展它。示例很多,但我邀请您在https://bitbucket.org/BerislavLopac/resume/src/d7cfcf9c370b/resume_app/myproject/web/views.py查看我的代码。在

According to the docsrender_to_response只接受以下参数:template_name, dictionary, context_instance, mimetype

因此,在FooResponseMixin内,当您打电话时:

self.HttpResponse.render_to_response(self.mutilate_context(ctx), **kwargs)

你不能接受额外的参数。删除**kwargs,或者只将您需要的内容分配给变量,以便传递给接受的参数。在

相关问题 更多 >