【问题标题】:How can i add a param to the existing url?...Django...Paginator如何将参数添加到现有 url?...Django...Paginator
【发布时间】:2021-05-06 02:33:31
【问题描述】:

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

.../search/?q=xyz

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

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

它使 URL 成为...

.../search/?page=2

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

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

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

【问题讨论】:

    标签: javascript html jquery django pagination


    【解决方案1】:

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

    这是我如何做到这一点的示例;

    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>
    

    【讨论】:

    • 这对我很有用....非常感谢我在过去的两天里一直在尝试这个..最后非常感谢.... :)....只需一个请求,您就可以解释 url_replace() 中发生的事情
    • 当然,它采用您请求中的GET 参数,将它们添加到分页器所需的 kwargs 中并对其进行编码,以便它们可以在 URL 中工作,以便它们可以通过链接传递。
    【解决方案2】:

    没有办法编写一个相对 URI 来保留现有的查询字符串,同时向它添加额外的参数。

    您必须将参数添加到您的链接看起来像这样的实际网址:

    &lt;a href="?q=xyz&amp;page=2"&gt; next page &lt;/a&gt;

    或类似的东西:

    &lt;a href="/search?q=xyz&amp;page=2"&gt; next page &lt;/a&gt;

    我想你明白了:)

    【讨论】:

      猜你喜欢
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 2014-11-28
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多