2013-03-15 41 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