0

我想从我的方法(视图)中调用具有额外上下文的基于类的通用视图。我得到的错误是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'),

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

4

1 回答 1

2

这是由于url的功能。您可以使用kwargs 传递参数,并定义一个 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.

于 2013-03-15T16:45:58.130 回答