Нежелательный/неправильный URL при использовании Django Paginator
Я пытаюсь использовать Django Paginator в своей веб-странице, но сгенерированный URL неверен
Вот мой код:
<div class="row">
<div class="col-auto">
<ul class="pagination">
{% if tickets.has_previous %}
<li class="page-item"><a class="page-link" href="{{current_uri}}?p=1"><<</a></li>
<li class="page-item"><a class="page-link" href="{{current_uri}}?p={{ tickets.previous_page_number }}"><</a></li>
{% else %}
<li class="page-item disabled"><a class="page-link" href=""><<</a></li>
<li class="page-item disabled"><a class="page-link" href=""><</a></li>
{% endif %}
{% for page_number in tickets.paginator.page_range|pagination_limit:tickets.number %}
{% ifequal tickets.number page_number %}
<li class="page-item active"><a class="page-link" href="{{current_uri}}?p={{page_number}}">{{page_number}}</a></li>
{% else %}
<li class="page-item"><a class="page-link" href="{{current_uri}}?p={{page_number}}">{{page_number}}</a></li>
{% endifequal %}
{% empty %}
No pages
{% endfor %}
{% if tickets.has_next %}
<li class="page-item"><a class="page-link" href="{{current_uri}}?p={{ tickets.next_page_number }}">></a></li>
<li class="page-item"><a class="page-link" href="{{current_uri}}?p={{ tickets.paginator.num_pages }}">>></a></li>
{% else %}
<li class="page-item disabled"><a class="page-link" href="">></a></li>
<li class="page-item disabled"><a class="page-link" href="">>></a></li>
{% endif %}
</ul>
</div> <!-- .col-auto -->
</div> <!-- .row -->
И вот что произошло:
Допустим, я посещаю свою веб-страницу, example.com, и по умолчанию страница пагинации равна 1.
Если я щелкну на странице 2, я получу этот url:
https://example.com/tasks/?p=2
Если я щелкаю на странице 3, вот сгенерированный url:
https://example.com/tasks/?p=2?p=3
Что неверно, и должно быть так:
https://example.com/tasks/?p=3
Также, если я перехожу на страницу 1, я получаю этот url:
https://example.com/tasks/?p=2?p=3?p=1
Я хотел бы узнать, как посетить только выбранную страницу вместо сохранения предыдущих значений.
(Вкратце)
Что я хочу:
https://example.com/tasks/ https://example.com/tasks/?p=2 https://example.com/tasks/?p=3 ...
Что я получаю сейчас:
https://example.com/tasks/ https://example.com/tasks/?p=2 https://example.com/tasks/?p=2?p=3
у кого-нибудь есть идеи, что может быть не так?
ОБНОВЛЕНИЕ:
current_uri приходит из этого представления (усеченного):
return render(
request,
"project/tickets.html",
{
"tickets_count": total_count,
"tickets_filter_count": filtered_count,
"tickets": tickets,
"filter": filter_set,
"filter_project": filter_project,
"current_uri": request.get_full_path(),
},
)
Используйте request.path вместо request.get_full_path() для current_uri
, поскольку он не будет включать текущую строку запроса, которая включает текущий параметр "p"
<a class="page-link" href="{{ request.path }}?p=1">