【问题标题】:How to set correct pagination href of next page if having arguments in url - django如果url中有参数,如何设置下一页的正确分页href - django
【发布时间】:2018-12-09 02:04:38
【问题描述】:

我正在做一个 django 项目,但是我在分页中遇到问题,如果在 url 中传递了多个参数,那么在搜索页面上我如何将它们设置为下一页的 href,这里我想做的是 -

  {% if is_paginated %}
        <ul class="pagination pull-right">
          {% if page_obj.has_previous %}
            <li><a href="?q={{ query }}&page={{ page_obj.previous_page_number }}">&laquo;</a></li>
          {% else %}
            <li class="disabled"><span>&laquo;</span></li>
          {% endif %}
          {% for i in paginator.page_range %}
            {% if page_obj.number == i %}
              <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
            {% else %}
              <li><a href="?q={{ query }}&page={{ i }}">{{ i }}</a></li>
            {% endif %}
          {% endfor %}
          {% if page_obj.has_next %}
            <li><a href="?q={{ query }}&page={{ page_obj.next_page_number }}">&raquo;</a></li>
          {% else %}
            <li class="disabled"><span>&raquo;</span></li>
          {% endif %}
        </ul>
      {% endif %}

但如果第一页 url 是

http://127.0.0.1:8000/search/products/?q=shirt&brand=Adidas

下一页是

http://127.0.0.1:8000/search/products/?q=shirt&page=2

品牌不存在!!我无法像查询那样将每个参数添加到 href,有什么方法可以在 url 末尾添加 &page{{i}} 吗?

【问题讨论】:

    标签: javascript jquery html django pagination


    【解决方案1】:

    我使用模板标签来实现这一点:

    @register.simple_tag(name='url_replace')
    def url_replace(request, field, value):
       print('this is form tag',request,field,value)
       d = request.GET.copy()
       d[field] = value
       return d.urlencode()
    

    在模板中:

        {% if is_paginated %}
            <ul class="pagination pull-right">
              {% if page_obj.has_previous %}
                <li><a href="?{% url_replace request 'page' page_obj.previous_page_number %}">&laquo;</a></li>
              {% else %}
                <li class="disabled"><span>&laquo;</span></li>
              {% endif %}
              {% for i in paginator.page_range %}
                {% if page_obj.number == i %}
                  <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
                {% else %}
                  <li><a href="?{% url_replace request 'page' i %}">{{ i }}</a></li>
                {% endif %}
              {% endfor %}
              {% if page_obj.has_next %}
                <li><a href="?{% url_replace request 'page' page_obj.next_page_number %}">&raquo;</a></li>
              {% else %}
                <li class="disabled"><span>&raquo;</span></li>
              {% endif %}
            </ul>
          {% endif %}
    

    这会很好用。

    【讨论】:

      猜你喜欢
      • 2011-12-16
      • 2019-10-05
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 2014-08-10
      • 2017-06-19
      相关资源
      最近更新 更多