Как установить правильный раздел нумерации страниц следующей страницы, если есть аргументы в URL - Django - PullRequest
0 голосов
/ 29 июня 2018

Я работаю над проектом 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, как я сделал для запроса, есть ли способ просто добавить & page {{i}} в конце URL?

1 Ответ

0 голосов
/ 30 июня 2018

Я использую шаблон тега для достижения этой цели:

@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 %}

Это будет хорошо работать.

...