Предыдущая кнопка не работает для пагинации в моем html-файле. Любое решение было бы замечательным
html файл
{% if page_obj.has_previous %}
<button method="post" type="submit" class="action-btn checkRequired Submit" name="action" value="Submit"> previous</button>
<input type="hidden" name="page_no" value="{{ page_obj.previous_page_number }}">
{% endif %}
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
{% if page_obj.has_next %}
<button method="post" type="submit" class="action-btn checkRequired Submit" name="action" value="Submit"> next</button>
<input type="hidden" name="page_no" value="{{ page_obj.next_page_number }}">
{% endif %}
views.py
def practise(request):
print(request)
questions_list = Question.objects.get_queryset().order_by('id')
paginator = Paginator(questions_list, 1)
page_number = request.POST.get('page_no')
page_obj = paginator.get_page(page_number)
print(request.GET)
if request.method=="POST":
answer = request.POST.get('answer')
difficulty = request.POST.get('myRange')
surety=request.POST.get('surety')
return render(request, "try.html", {'page_obj': page_obj})
Здесь я объявил значения следующей и предыдущей кнопок (ссылки), но после нажатия на кнопку Previous происходит переход на следующую страницу вместо предыдущей. Пожалуйста, любая помощь будет оценена по достоинству.
Вы не можете использовать POST-запросы при работе с пагинацией, смотрите здесь, чтобы узнать почему.
При GET-запросах ваш код должен выглядеть примерно так :
def practice(request):
question_list = Question.objects.get_queryset().order_by('id')
paginator = Paginator(question_list, 1)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
if request.method=="POST":
# Maybe verify the validity of your post data
answer = request.POST.get('answer')
difficulty = request.POST.get('myRange')
surety=request.POST.get('surety')
# Do something
# HttpResponseRedirect to another url
return render(request, 'try.html', {'page_obj': page_obj})
Если вы хотите использовать кнопки, вы можете сделать так в вашем шаблоне, или же с помощью ссылки вы можете следовать документации.
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}"><button> Previous</button></a>
{% endif %}
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}"><button> Next</button></a>
{% endif %}
Надеюсь, это поможет!