首页 > 解决方案 > 如何向现有 url 添加参数?...Django...Paginator

问题描述

我制作了一个页面,其中显示了数据库中的一些数据。我在我的网站上添加了一个分页器。我的网站也有一个搜索栏。所以当用户搜索某些东西时...... URL是......

.../search/?q=xyz

所以当我对搜索到的数据进行分页时......

<a href="?page={{ walls.next_page_number }}"> next page </a>

它使 URL 为...

.../search/?page=2

但这是一个错误......但是,我想要这样的东西......

.../search/?q=xyz&page=2

我怎样才能做到这一点...

标签: javascripthtmljquerydjangopagination

解决方案


您可以使用模板标签将获取参数动态组合到分页器。

这是我如何执行此操作的示例;

from django import template
from django.utils.http import urlencode

register = template.Library()


@register.simple_tag(takes_context=True)
def url_replace(context, **kwargs):
    query = context['request'].GET.dict()
    query.update(kwargs)
    return urlencode(query)
{% load url_replace %}

            <div class="pagination-container">
                <ul class="pagination">
                    {% if page_obj.has_previous %}
                        <li class="pagination-item">
                            <a href="?{% url_replace page=1 %}">first</a>
                        </li>
                        <li class="pagination-item">
                            <a href="?{% url_replace page=page_obj.previous_page_number %}">previous</a>
                        </li>
                    {% endif %}
                    <li class="pagination-item">
                        <span class="current">
                            Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
                        </span>
                    </li>

                    {% if page_obj.has_next %}
                        <li class="pagination-item">
                            <a href="?{% url_replace page=page_obj.next_page_number %}">next</a>
                        </li>
                        <li class="pagination-item">
                            <a href="?{% url_replace page= page_obj.paginator.num_pages %}">last</a>
                        </li>
                    {% endif %}
                </ul>
            </div>

推荐阅读