【问题标题】:add jump to page function for server-side pagination in Django为 Django 中的服务器端分页添加跳转到页面功能
【发布时间】:2022-01-13 23:07:21
【问题描述】:

我有一个 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})

我怎样才能实现这个功能?

【问题讨论】:

    标签: django pagination


    【解决方案1】:

    您可以将要进入网址的页码作为参数传递。请注意,如果传递的参数超过总页数,则将提供最后一个可用的页面

    例如:

    #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>
    

    【讨论】:

    • 如何添加输入以获取用户输入并将其传递给参数?
    • 无论如何你想要...有一个表单可以发布用户输入并从视图重定向到 url .... 或者有一个文本框并在点击时通过 Javascript 传递参数...
    猜你喜欢
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多