Нумерация страниц с идентификатором в URL вместо od "? Page =" - PullRequest
0 голосов
/ 14 марта 2019

У меня есть приложение в Django 1.8, и моя проблема в параметре "? Page =" в адресе. Моя цель - адрес в 127.0.0.0.1 / blog / 1 - и результаты поиска. Могу ли я рассчитывать на подсказку?

Мои URL:

urlpatterns = [
    url(r'^$', MyListView.as_view(), name='list'),
    url(r'/(?P<slug>[-\w]+)/(?P<pk>\d+)$', views.BlogDetailView.as_view(), name='blog_detail'),
]

Мой взгляд:

class MyListView(ListView):
    model = models.Blog
    queryset = models.Blog.objects.order_by('-pub_date')
    template_name = 'blog/blog_list.html'
    context_object_name = 'blog_list'
    paginate_by = 10

код в шаблоне

{% if is_paginated %}
  <ul class="pagination">
    {% if page_obj.has_previous %}
      <li><a href="?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="?page={{ i }}">{{ i }}</a></li>
      {% endif %}
    {% endfor %}
    {% if page_obj.has_next %}
      <li><a href="?page={{ page_obj.next_page_number }}">&raquo;</a></li>
    {% else %}
      <li class="disabled"><span>&raquo;</span></li>
    {% endif %}
  </ul>
{% endif %}

1 Ответ

0 голосов
/ 14 марта 2019

Было бы трудно управлять так, как вы этого хотите.Если у вас просто проблема с ключевым словом страницы для разбивки на страницы, вы можете изменить аргумент, используемый для разбивки на страницы, установив page_kwarg в ListView.как это

class MyListView(ListView):
    model = models.Blog
    queryset = models.Blog.objects.order_by('-pub_date')
    template_name = 'blog/blog_list.html'
    context_object_name = 'blog_list'
    paginate_by = 10
    page_kwarg = 'my_page_number'

Теперь вы можете использовать 127.0.0.0.1/blog?my_page_number=2 для пагинации

Или, если вы действительно хотите передать номер страницы в качестве URL-параметра, вы переопределите метод paginate_queryset в представлении списка исделать переопределение page_kwarg там.

Источник см. здесь https://github.com/django/django/blob/master/django/views/generic/list.py#L54

...