привет всем на моем 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')