2016-09-09 21 views
0

我目前在我的項目中有一個工作搜索表單,它通過表單數據傳遞給GET請求。相當標準。 我想要做的是搜索數據輸入到搜索表單中,以便搜索數據實時顯示結果。這很像Google對即時桌面搜索結果的做法。這對Django來說是可能的嗎? 下面是我目前(簡單)搜索Django搜索作爲輸入被輸入表格

#views.py 
def ProductView(request): 
title = 'Products' 
all_products = Product.objects.all().order_by("product_Name") 
query = request.GET.get("q") 
if query: 
    products = all_products.filter(
     Q(product_Name__contains=query) | 
     Q(manufacturer__contains=query) 
    ).distinct() 
    return render(request, 'mycollection/details.html', { 'all_products' : products }) 

-

<!-- HTML --> 
    <!-- SEARCH BAR --> 
<form class="navbar-form navbar-left" role="search" method="get" action="{% url 'mycollection:products' %}"> 
    <div class="form-group"> 
     <input type="text" class="form-control" name="q" value="{{ request.GET.q }}"> 
    </div> 
    <button type="submit" class="btn btn-default">Search</button> 
</form> 
+0

通過「實時顯示」你的意思是當用戶鍵入 – denvaar

+1

這當然是可能的。但是,對我來說,解決方案聽起來更像是一個Javascript問題。您需要有一個可用的Javascript實用程序,它可以對使用JavaScript返回瀏覽器的搜索結果的json對象返回(例如)返回的端點執行Ajax調用。問題是,「如何」是一個非常複雜的答案,高度依賴於您的網站的前端架構。 –

+0

是的,denvaar,我正在尋找這樣做沒有GET請求。釀酒大師,我不太喜歡Javascript,但這是我需要更多參與的東西。您是否可以通過示例實現您指的是我可以嘗試並根據需要量身定製的內容? – csling

回答

0

您可以在保存request.data會話,如果任何數據與會話搜索數據相關聯,你可以把價值的搜索框。

request.session['search'] = request.GET.get('q','') 

templete:(?即在發送GET請求之前)

{% if request.session.search %} {{request.session.search}} {% endif %}