[英]Problem with pagination in template django?
我在應用程序中有這樣的觀點,並嘗試在我的模板中進行分頁。 但是上一個和下一個不起作用。 怎么了?
class ForMenView(ListView):
model = Post
template_name = 'man_index.html'
context_object_name = 'all_posts'
paginate_by = 1
def get_queryset(self):
query = self.request.GET.get('q')
qs = Post.objects.filter(sex='M', is_published=True)
if query:
return qs.filter(title__icontains=query)
return qs
def get_paginate_by(self, queryset):
user = self.request.user
if user.is_authenticated and user.sex == 'M':
return 1
return self.paginate_by
def dispatch(self, request, *args, **kwargs):
user = self.request.user
if user.is_authenticated and user.sex == 'W':
return redirect('/forwomen') # please replace it with the view name
else:
return super(ForMenView, self).dispatch(self.request ,*args, **kwargs)
def get_context_data(self, *args, **kwargs):
kwargs = super(ForMenView, self).get_context_data(*args, **kwargs)
kwargs['page_range'] = kwargs['paginator'].page_range
return kwargs
在我的模板中,我嘗試以這種方式進行分頁
THIS DOESN'T DISPLAY AT ALL
{% if all_posts.has_previous %}
<li><a class="pgn__prev" href="?page={{ all_posts.previous_page_number }}">Prev</a></li>
{% endif %}
{% for x in page_range %}
<li><a class="pgn__num" href="?page={{ x }}">{{ x }}</a></li>
{% endfor %}
THIS DOESN'T DISPLAY TOO
{% if all_posts.has_next %}
<li><a class="pgn__next" href="?page={{ all_posts.next_page_number }}">Next</a></li>
{% endif %}
我的{{all_posts}}上下文值= <[Post:TitlePost]>為什么上一個和下一個無效?
all_posts
只是queryset。 要檢查上一頁和下一頁,您需要page
對象,該對象作為page_obj
變量傳遞到模板:
{% if page_obj.has_previous %}
<li><a class="pgn__prev" href="?page={{ page_obj.previous_page_number }}">Prev</a></li>
{% endif %}
{% if page_obj.has_next %}
<li><a class="pgn__next" href="?page={{ page_obj.next_page_number }}">Next</a></li>
{% endif %}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.