#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
страницы.