用ListView替换object_list:AttributeError

1 投票
1 回答
1258 浏览
提问于 2025-04-17 22:28

我正在尝试把一个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 并扩展它。

撰写回答