Предыдущая кнопка не работает для пагинации в моем 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 %}

Надеюсь, это поможет!

Вернуться на верх