2013-03-15 18 views
0

我想从我的方法(视图)中调用具有额外上下文的基于类的通用视图。我得到的错误是as_view() takes exactly 1 argument (4 given)。我正在使用django-userena。执行此用额外的上下文修饰as_view()

代码是:

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'), 

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

回答

2

这是由于url的功能所致。你可以使用kwargs to pass the parameters,并按如下定义URL模式:

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

+0

是的,谢谢。但是,这有效:)以我自己的观点装饰是问题。 – ivica 2013-03-15 16:54:02

+1

我编辑了我的答案。请让我知道如果它澄清您的问题 – furins 2013-03-15 17:13:59

+0

再次感谢您。我还有一个问题;当我从urls.py中调用它时,我没有像之前那样获取查询集。这导致几乎空白的HTML页面。 – ivica 2013-03-15 17:18:10