用ListView替换object_list:AttributeError

时间:2014-03-15 19:37:14

标签: python django listview

我正在尝试将Django应用程序更新到v1.6。当我替换已弃用的

return object_list(request,  template_name='generic_list.html', *args, **kwargs)

return ListView.as_view(template_name='generic_list.html', *args, **kwargs)

我收到此错误:

AttributeError at /assets/asset/list/
'function' object has no attribute 'status_code'
Request Method: GET
Request URL:    `http://127.0.0.1:8000/assets/asset/list/`
Django Version: 1.6
Exception Type: AttributeError
Exception Value:    
'function' object has no attribute 'status_code'
Exception Location: c:\Program Files (x86)\Python\lib\site-packages\django\middleware\locale.py in process_response, line 41

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您没有这么说,但您似乎在现有视图的末尾使用通用视图。您通常不会使用基于类的通用视图:它们的全部要点是您可以通过子类扩展它们,以这种方式添加您自己的功能。

但是,你可以通过实际调用视图来在短期内修复你的即时错误:你在这里做的只是创建视图对象(它本身是可调用的)。您仍然需要调用该对象,并将请求和任何参数传递给它:

view = ListView.as_view(template_name='generic_list.html')
return view(request, *args, **kwargs)

但正如我所说,我不建议这样做:你应该继承ListView并扩展它。