用ListView替换object_list:AttributeError
我正在尝试把一个Django应用程序更新到1.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 个回答
2
你没有明确说,但看起来你是在现有视图的基础上使用通用视图。通常情况下,使用基于类的通用视图时,不会这样做:它们之所以是类,就是为了让你可以通过子类化来扩展它们,添加你自己的功能。
不过,短期内你可以通过实际调用视图来解决你当前的问题:你现在做的只是创建了一个视图对象(这个对象本身是可以调用的)。你还需要调用这个对象,并传入请求和任何参数:
view = ListView.as_view(template_name='generic_list.html')
return view(request, *args, **kwargs)
不过,正如我所说的,我不建议这样做:你应该去子类化 ListView 并扩展它。