用额外的上下文装饰as_view()

时间:2013-03-15 16:36:21

标签: python django

我想从我的方法(视图)中使用额外的上下文来调用基于类的通用视图。我得到的错误是as_view() takes exactly 1 argument (4 given)。我使用django-userena

执行此操作的代码是:

return userena_views.ProfileListView.as_view(request,template_name='userena/profil.html', extra_context=projekti)

在urls.py中我有这一行:

url(r'^accounts/(?P<username>[\.\w-]+)', userena_views.ProfileListView.as_view(template_name='userena/profil.html', extra_context=Projekat.objects.all), name='userena_profile_list'),

为什么这两个不同?我做错了什么?

1 个答案:

答案 0 :(得分:2)

这是由于url的功能。您可以使用kwargs to pass the parameters,并按如下方式定义网址格式:

url(r'^accounts/(?P<username>[\.\w-]+)', userena_views.ProfileListView.as_view(), name='userena_profile_list', kwargs={'template_name':'userena/profil.html', 'extra_context':Projekat.objects.all}),

<小时/> 的修改

我误解了你的问题,抱歉。 然后,尝试正确回答您的问题......您的代码应该是这样的:

your_callable_view = userena_views.ProfileListView.as_view()
return your_callable_view(request, template_name='userena/profil.html', extra_context=projekti)

原因是ProfileListView.as_view()返回必须使用参数调用的函数。 url()为您执行此操作,这就是为什么它适用于您的ulrpatterns而不是代码。 as_view()唯一需要的参数是self