ошибка разбивки на страницы django: ошибка атрибута: объект ‘WSGIRequest’ не имеет атрибута ‘Get’

#django

#django

Вопрос:

Мне трудно с разбиением на страницы django. Может кто-нибудь помочь мне с этим?

Это представление возвращает ошибку:

 def view_homePage(request, user):
if user == 'all':
    posts = Post.objects.order_by("-timestamp").all()
    paginator = Paginator(posts, 2)
        
    ERROR ---> page_number = request.Get.get('page') or 1
    page_obj = paginator.get_page(page_number)
    return JsonResponse([post.serialize() for post in page_obj], safe=False)
  

Ошибка, которую я получаю, такова: AttributeError: 'WSGIRequest' object has no attribute 'Get'

Если я удалю строку и просто настрою page_number = 1 для тестирования, у меня возникнет новый набор проблем. Как мне на самом деле передать номер страницы в представление с HTML-страницы? Я попытался добавить это для тестирования, но это не работает:

 <nav aria-label="...">
     <ul class="pagination">
         <li class="page-item"><a class="page-link" 
               href="?page=3">3</a>
         </li>
     </ul>
 </nav>
  

В приведенном выше коде я жестко запрограммировал страницу 3 только для тестирования, но она не попадает в представление. Как мне это сделать? Документация django отсутствует в этом отношении.

Ответ №1:

Строка запроса хранится в a QueryDict в .GET атрибуте [Django-doc] request , поэтому:

 page_number = request.GET.get('page') or 1  

Обратите внимание, что идентификаторы Django чувствительны к регистру, поэтому .GET и .Get отличаются.

Комментарии:

1. Мой второй вопрос: как мне на самом деле передать номер страницы в представление из html?

2. @chris26jp: это находится в строке запроса, поэтому часть после ? , так что, например /path/to/the/view?page=2 , для перехода 2 к 'page' ключу request.GET .

3. @chris26jp: я действительно не понимаю, в чем проблема, вы можете fetch('/homepage/?page=' n) n указать номер страницы.

4. Возможно, тогда мой дизайн вызвал у меня проблемы. Вся страница создается динамически с помощью JavaScript. JS вызывает представление с выборкой, представление возвращает данные обратно в JS для динамического построения страницы. Должен ли я рассматривать альтернативу разбивке на страницы в формате JS?

5. @chris26jp: если пользователь также динамичен, вы можете объединить их, так fetch('/homepage/' n '?page=' p) что с n user помощью и p страницы.