django:如何将此视图迁移到基于类的通用视图等效?

时间:2011-07-18 08:59:28

标签: django django-views django-class-based-views

我无法将以下代码转换为新的基于django 1.3类的通用视图格式。具体来说,我不明白如何将'extra_context'传递给基于类的视图。有人可以帮助我将此代码转换为新的符号吗?或发布一个好例子的链接?我已经阅读了文档,但这个例子非常脆弱。

def return_event_list_object(request, username, queryset, entries_per_page, param1, param2):
    ...
    ...
    return object_list(request, queryset = queryset,
            template_name = 'myapp/list_events.html', 
            paginate_by = int(entries_per_page), 
            template_object_name = 'event',
            extra_context = {'param1': param1, 
                            'param2': param2, } )

感谢您的投入!

1 个答案:

答案 0 :(得分:3)

文档的extra_context部分介绍了如何向上下文添加项目:

  

基于类的视图不提供extra_context参数。相反,您将视图子类化,覆盖get_context_data()。例如:

在您的情况下,请尝试:

class MyListView(ListView):
    def get_context_data(self, **kwargs):
        context = super(MyListView, self).get_context_data(**kwargs)
        context.update({
            'param1': kwargs['param2'],
            'param2': kwargs['param1']
        })
    return context