2014-05-22 30 views
0

我有以下代碼。我試圖在URL中傳遞一個名爲'sort'和'sch'的get變量,但是當我打印self.kwargs時,它將返回null。如果有人能指出我正確的方向,將不勝感激!獲取變量在Self.Kwargs中不可用

Views.py - ToolList

class ToolList(SearchableListMixin, SortableListMixin, ListView): 
    model = ToolCalibration 
    template_name = 'tool_cal/list.html' 
    paginate_by = 10 
    context_object_name = 'tools' 
    search_fields = ['description', 'notes', 'tolerance_notes'] 
    sort_fields_aliases = [ 
     ('description', 'by_description'), 
     ('last_certified', 'by_last_certified'), 
     ('due_date', 'by_due_date'), 
     ('tool_status', 'by_tool_status'), 
     ] 

    def get_queryset(self, **kwargs): 
     qs = super(ToolList, self).get_queryset() 
     print(self.kwargs) 
     sort = 'due_date' 
     ### PROBLEM IS HERE. FOR SOME REASON KWARGS ISN'T GRABBING GET VARIABLES ### 
     if 'sort' in self.kwargs: 
      sort = self.kwargs['sort'] 
     try: 
      schema = self.kwargs['sch'] 
      print 'Context using %s' % schema 
      return qs.filter(schema__abbrev=schema).order_by(sort) 
     except: 
      print 'Context contains no schema' 
      return qs.order_by(sort) 

    def get_context_data(self, **kwargs): 
     context = super(ToolList, self).get_context_data(**kwargs) 
     context['enterprise'] = EnterpriseSchema.objects.all() 
     return context 

回答

6

GET參數可以通過request對象進行訪問。 request對象具有屬性GETQueryDict實例,它是一個類似字典的對象。同樣,使用request對象也可以訪問POST參數。在Django 1.7之前,您可以使用屬性REQUEST來訪問GET或參數。這已被棄用,原因是最好使用更明確的GETPOST屬性。

# GET parameters 
self.request.GET.get('sort') 
self.request.GET.get('sch') 

# POST parameters 
self.request.POST.get('key') 

# Prior to Django 1.7, you can do 
self.request.REQUEST.get('key') # this is either a GET or POST parameter 
+0

正是我一直在尋找!謝謝! – Greg

0

嘗試在urls.py中捕獲您的變量。喜歡的東西

urlpatterns = patterns('', 
url(r'^(?P<sort>\w+)/(?P<sch>\w+)/', yourview),