django迁移到旧应用程序的1.6:ListView

时间:2013-11-24 23:01:39

标签: django listview migration

我正在将旧应用程序迁移到django 1.6。

现在,有些观点以这种方式编程:

from django.views.generic.list_detail import object_list

@render_to("items/index.html")
def index(request):
    profile = request.user.get_profile()    
    args = clean_url_encode(request.GET.copy().urlencode())
    context = {
        'is_dashboard': True,
        'body_id': 'dashboard',
        'object_list': None,
        'args':args,
        'show_in_process':False
    }
    return context

我知道我现在需要使用新的ListView,但是示例和文档似乎并没有告诉我这个特例:object_list是在上下文中传递的。

如何调整此代码以使用基于类的新通用视图?我是否也可以使用ListView.asView()代替'object_list':None ?

1 个答案:

答案 0 :(得分:0)

如果您没有对象列表,为什么使用ListView?我认为TemplateView应该完成这项工作。您只需覆盖get_context_data并提供自定义上下文

即可
class IndexView(TemplateView):
    template_name = 'items/index.html'

    def get_context_data(self, **kwargs):
        context = super(IndexView, self).get_context_data(**kwargs)
        profile = self.request.user.get_profile()
        args = clean_url_encode(self.request.GET.copy().urlencode())
        context.update({
            'is_dashboard': True,
            'body_id': 'dashboard',
            'object_list': None,
            'args':args,
            'show_in_process':False
        })
        return context