2017-03-06 73 views
0

如何在django泛型listView中檢索表單搜索參數。我的網址是:Django:如何在django泛型列表中檢索表單搜索參數查看

url(r'postsearch$', views.PostsList.as_view(), name='postsearch'),

我的通用列表視圖是:

class PostsList(generic.ListView): 
model = Post 
template_name = 'posts/post_list.html' 

def get_queryset(self): 
    localisation = #how to get location 
    discipline = #how to get discipline 

    return Post.objects.filter(.......) 

,我的形式是:

<form class="form-inline text-center" action="{% url 'posts:postsearch' %}" id="form-searchLessons" method="get"> 
     <div class="form-group"> 
     <input type="text" class="form-control" id="typeCours" list="matieres" placeholder="Matieres: e.g. Math, Physique,.." name="discipline"> 
      <datalist id="matieres"> 
       <option value="value1"> 
       <option value="value2"> 
      </datalist> 
     </div> 
     <div class="form-group"> 
     <input type="text" class="form-control" id="Localisation" placeholder="Lieu: Bousaada, Douaouda,.." 
       name="localisation" onFocus="geolocate()"> 
     </div> 
     <button type="submit" class="btn btn-default" id="btn-getLessons"> 
     <span class="glyphicon glyphicon-search" aria-hidden="true"></span> Trouver ! 
     </button> 
    </form> 

我想根據應用過濾器來獲取帖子在搜索字段中引入的lacalisation和matieres(在表格中)

回答

0

您可以將搜索條件添加到url正則表達式中。

url(r'postsearch/(?P<localisation>\w+)/(?P<descipline>\w+)/$', views.PostsList.as_view(), name='postsearch'), 

(注意,心中最後的斜線)

在你get_queryset方法,你可以使用這些給定的URL參數

def get_queryset(self): 
    localisation = self.kwargs['localisation'] or None 
    discipline = self.kwargs['discipline'] or None 
    filters = {} 

    if localisation: 
     filters.update(localisation: localisation) 
    if discipline: 
     filters.update(discipline: discipline) 

    return Post.objects.filter(**filters) 

最終,你應該重新定位讓你get_queryset之外的參數,但你決定。

我不確定這樣做的安全風險。任何人在此操作過程中都有關於安全風險的更多信息,請分享。

+0

它不承認關鍵字的本地化和紀律,所以我用json來獲取參數 – A2maridz