Добавить функцию перехода к странице для пагинации на стороне сервера в Django

У меня есть проект Django, использующий пагинацию на стороне сервера для некоторой таблицы.

Пользователь хочет, чтобы я добавил функцию перехода к странице, которую он выбирает, независимо от того, выпадающий список или поле ввода.

Browse_and_adopt.html:

<div class="pagination">
<span class="step-links">
    {% if page_obj.has_previous %}
        &emsp;<a href="?page=1">&laquo; First Page</a>
        &emsp;<a href="?page={{ page_obj.previous_page_number }}">Previous Page</a>
    {% endif %}

    <span class="current">
        &emsp;Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
    </span>

    {% if page_obj.has_next %}
        &emsp;<a href="?page={{ page_obj.next_page_number }}">Next Page</a>
        &emsp;<a href="?page={{ page_obj.paginator.num_pages }}">Last Page&raquo;</a>
    {% endif %}
</span>
</div>

view.py:

    @csrf_exempt
def search_book(request):
    global Title_list_cache
    if request.method == 'POST':
        print(request.POST)
        search_keyword = request.POST.get('search_keyword', '')
        print(search_keyword)


        Title_list = Title.objects.filter(Q(Format_issued="eText") | Q(Format_issued="Print"), title__icontains=search_keyword).select_related('publisher').order_by('title') | Title.objects.filter(Q(Format_issued="eText") | Q(Format_issued="Print"), author__icontains=search_keyword).select_related('publisher').order_by('title') | Title.objects.filter(Q(Format_issued="eText") | Q(Format_issued="Print"), vbid__icontains=search_keyword).select_related('publisher').order_by('title')  | Title.objects.filter(Q(Format_issued="eText") | Q(Format_issued="Print")).select_related('publisher').filter(publisher_id__name=search_keyword).order_by('title')| Title.objects.filter(Q(Format_issued="eText") | Q(Format_issued="Print"), description__icontains=search_keyword).select_related('publisher').order_by('title')

        Title_list_cache = Title_list
    else:
        Title_list = Title_list_cache

    page = request.GET.get('page', 1)

    paginator = Paginator(Title_list, 10)
    try:
        Titles = paginator.page(page)
    except PageNotAnInteger:
        Titles = paginator.page(1)
    except EmptyPage:
        Titles = paginator.page(paginator.num_pages)

    query_results_2 = Semester.objects.all()

    page_obj = paginator.get_page(page)

    query_results_code = CourseInfo.objects.none()
    if request.user.is_authenticated:
        username = request.user.username
    user_id = User.objects.get(username=username).id
    #user_id = 1  #test
    discipline_queryset = Discipline.objects.filter(hop1_id=user_id) | Discipline.objects.filter(hop2_id=user_id) | Discipline.objects.filter(executive_id=user_id) | Discipline.objects.filter(executive2_id=user_id) | Discipline.objects.filter(executive3_id=user_id)
    print(discipline_queryset)

    for discipline in discipline_queryset:

        id = Discipline.objects.only('id').get(name=discipline).id
        query_results_code = query_results_code | CourseInfo.objects.filter(discipline_id=id).values(
        'discipline_code', 'code').distinct().order_by('discipline_code')

    print(query_results_code)

    return render(request, 'bms/inbox/Browse_and_adopt.html', {'Titles': Titles, 'page_obj': page_obj, 'query_results_2':query_results_2, 'query_results_code':query_results_code})

Как я могу достичь этой функции?

В качестве параметра можно передать номер страницы, которая должна попасть в url. Обратите внимание, что если переданный параметр превышает общее количество страниц, то будет обслуживаться последняя доступная страница

eg:

#custom button to get yo specific page
<li class="page-item">
    <a href="{% url 'appname:function_name' %}?page=[page number user wants to go]">
        <span class="page-link">{{all_shop_products.number|add:"1" }}</span>
    </a>
</li>
Вернуться на верх