我想从我的方法(视图)中使用额外的上下文来调用基于类的通用视图。我得到的错误是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'),
为什么这两个不同?我做错了什么?
答案 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
。