2016-03-02 4 views
1

Я хочу создать форму поиска на моем сайте django. Так что я просто создать список поиска продукта:Django search html form

class ProductSearchListView(ProductList): 
    """ 
    Display a Product List page filtered by the search query 
    """ 
    paginate_by = 10 

    def get_queryset(self): 
     result = super(ProductSearchListView, self).get_queryset() 

     query = self.request.GET.get('q') 

     if query: 
      query_list = query.split() 
      result = result.filter(
       reduce(
        operator.and_, 
        (Q(nome__icontains=q) for q in query_list) 
       ) | 
       reduce(
        operator.and_, 
        (Q(categoria__icontains=q) for q in query_list) 
       ) 
      ) 

     return result 

В моем HTML я хочу иметь поле, чтобы сделать простой поиск и, нажав кнопку ENTER, пользователь должен увидеть список всех товаров.

<form id="searchform" action="{% do something %}" method="get" accept-charset="utf-8"> 
    <input .../> 
</form> 

{% if list_of_products_returned_from_search == null %} 
    <div ...> 
     None product found. 
    </div> 
{% elif products exists %} 
    {% for product in products %} 
     Name: {{product.name}} 
    {% endfor %} 
{% endif %} 
+0

Итак, в чем вопрос? ' karthikr

+0

Вопрос: «Как вызвать метод query_set» в html? – dsbonafe

+0

@ user2732966 зависит от того, как он сохраняется в контексте. Что входит в ProductList? – zanderle

ответ

0

Я решаю проблему.

Во-первых, я создаю функцию в views.py:

def return_home(request): 
    lista_de_produtos = Produto.objects.all() 
    query = request.GET.get("q") 
    if query: 
     query_list = query.split() 
     lista_de_produtos = lista_de_produtos.filter(nome__icontains=query) 


    context = { 
     "produtos": lista_de_produtos, 
    } 
    return render(request, 'homepage.html', context) 

После, я пишу HTML код:

     {% if produtos %} 
          <ul id="flexiselDemo3"> 
         {% for produto in produtos %} 
           <li> 
            <div class="col-md-3 biseller-column"> 
             <a href="single.html"> 
              <img src="{{produto.foto}}"/> 
              <span class="price">R&#36; {{produto.preco}}</span> 
             </a> 
             <div class="ad-info"> 
              <h5>{{produto.nome}}</h5> 
              <span>{{produto.descricao_curta}}</span> 
             </div> 
            </div> 
           </li> 
         {% endfor %} 
         </ul> 
        {% else %} 
        <p id="flexiseDemo3"> 
        Nenhum produto encontrado! 
        </p> 
        {% endif %} 

Спасибо!