Django: фильтрация запросов с использованием флажков - PullRequest
0 голосов
/ 21 апреля 2020

привет всем на моем django веб-сайте. У меня есть страница HTML, где перечислены результаты, основанные на вводе пользователя в форму поиска (расположенную на главной странице). Затем, когда я перечислю все из них, я бы хотел, чтобы пользователь мог добавить еще один фильтр, поэтому я добавил два флажка на этой странице. Во всяком случае, я не знаю, как заставить страницу перезагрузиться и показать результаты, основываясь на установленном флажке. Я добавил некоторые комментарии к коду, чтобы вы поняли, что я пытался сделать. Надеюсь, что кто-то может действительно помочь мне, я не знаю, где go

Вот шаблон HTML страницы reuslt:

 {% if sp %}

    <div class="filtro">
      <h3 style=text-align:center> FILTRI RICERCA </h3>
      <div class="form-check">
        <label class="form-check-label" for="grid-check"> Band </label>
        <input class="form-check-input" type="checkbox" id="grid-check" name="band"><br/>
        <label class="form-check-label" for="grid-check"> Album </label>
        <input class="form-check-input" type="checkbox" id="grid2-check" name="album">
        <input type="submit" name="try"> filtra </input>

      </div>
    </div>

    {% for k in sp %}

    <div class="container_band">
      <div class=album_band>
        <!-- insert an image -->
        {%if k.cover%}
        <img src= "{{k.cover.url}}" width="100%">
        {%else%}
        <img src="static/search/images/no.jpg" width="100%">
        {%endif%}
      </div>

      <div class="info_band">
        <!-- insert table info -->
        <table>
          <tr><th colspan=2><h3>{{k.band}}</h3></th></tr>
          <tr><td> Disco: </td><td> {{k.disco}} </td></tr>
          <tr><td> Anno: </td><td> {{k.anno}} </td></tr>
          <tr><td> Etichetta: </td><td> {{k.etichetta_d}} </td></tr>
          <tr><td> Matrice: </td><td> {{k.matrice}} </td></tr>
        </table>
      </div>
      <a href="{% url 'user' %}"><p style=float:right> utente: {{k.utente}} </p></a>
    </div>


    {%endfor%}

Здесь views.py в том числе функция поиска:

class searchesView(TemplateView):
    template_name = "search/searches.html"

    def post(self, request, *args, **kwargs):
        print('FORM POSTED WITH {}'.format(request.POST['srh']))
        srch = request.POST.get('srh')

 #The name of the two checkbox
        Gruppo = request.GET.get('band')
        Album = request.GET.get('album')

#The button I added with the intent of reload the page
        prova = request.GET.get('try')

#First I check if the input of the user correspond to something in the DB

        if srch:

            sp = Info.objects.filter(Q(band__icontains=srch) | Q(disco__icontains=srch))

            paginator = Paginator(sp, 10)
            page_number = request.GET.get('page')
            page_obj = paginator.get_page(page_number)

#Then if there's some results and the User then check a box
#if the button is pressed the page should reload (or not) and show the results based on the checked box

            if prova:

                if Gruppo == 'on':
                    sp = sp.filter(Gruppo=True)
                    sp = Info.objects.filter(Q(band__icontains=srch))


                elif Album == 'on':
                    sp = sp.filter(Gruppo=True)
                    sp = Info.objects.filter(Q(disco__icontains=srch))


            return render(self.request, 'search/searches.html', {'sp':sp,
                                                                       'page_obj': page_obj
                                                                       })

        else:
            return render(self.request, 'search/searches.html')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...