2014-01-29 45 views
0

我已經寫了這個Django ListView(我不是很熟悉它),我試圖用init覆蓋基於slug輸入的變量。不知何故,似乎init函數沒有對關鍵字參數的訪問。派遣功能完成這項工作很好,但我想知道爲什麼初始化不起作用。有任何想法嗎?Django ListView __init__接受關鍵字參數

代碼:

Views.py

from django.views.generic import ListView 
form models import MyModel 

class MyListView(ListView): 
    model = MyModel 
    template_name = 'index.html' 

    # does not work 
    def __init__(self, **kwargs): 
     print kwargs 
     return super(MyListView, self).__init__(**kwargs) 

    # works 
    def dispatch(self, request, *args, **kwargs): 
     print self.kwargs 
     return super(MyListView, self).dispatch(request, *args, **kwargs) 

    def get_queryset(self): 
     # filter for data based on category_slug input 

    def get_context_data(self, **kwargs): 
     context = super(MyListView, self).get_context_data(**kwargs) 
     return context  

Urls.py:

url(r'^browse/(?P<category_slug>[a-zA-Z0-9-]+)', MyListView.as_view(), name='browse-category'), 

回答

1

因爲他們是類爲主,您在訪問關鍵字arguements任何地方通過self

def get_queryset(self): 
    # filter for data based on category_slug input 
    categories = self.model.objects.filter(slug=self.kwargs['category_slug']) 
    ... 
    return categories 
+0

對不起,我應該更好地解釋一下這個問題。我意識到這一點,仍然得到一個'AttributeError:'MyListView'對象在調用'self.kwargs'時沒有屬性'kwargs''? –

相關問題