【问题标题】:django: how do I migrate this view to class-based generic view equivalent?django:如何将此视图迁移到等效的基于类的通用视图?
【发布时间】:2011-10-07 12:27:48
【问题描述】:

我无法将以下代码转换为新的 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, } )

感谢您的意见!

【问题讨论】:

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


    【解决方案1】:

    文档的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
    

    【讨论】:

    • 我如何调用 MyListView 然后传递参数?我只看到像 MyListView.as_view() 这样的调用。这是我传递参数的地方吗?
    • 是的,相信你把参数传给MyListView.as_view()
    猜你喜欢
    • 1970-01-01
    • 2013-04-15
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2021-01-24
    • 2016-08-06
    相关资源
    最近更新 更多