python - 模板django中的分页问题?
问题描述
我在我的应用程序中有这样的观点,我尝试在我的模板中进行分页。但是 prev 和 next 不起作用。怎么了?
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
只是查询集。要检查上一页和下一页,您需要对象,该对象作为变量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 %}
推荐阅读
- python - 仅在 Python 中签署肥皂附件内容
- python - 使用正则表达式从文本文件中查找特定字符串之前的单词
- ios - 我的 UIBarButtonItem 代码未执行,但所有内容都已正确链接
- excel - 当我添加一个额外的 'If Like Then' 条件时宏失败
- python - 如何在 Web 套接字中从服务器向客户端发送消息
- node.js - 在与 VUE 应用相同的服务器上访问 API
- python - Pygame:玩家精灵不正确地碰撞并剪入墙壁
- r - pivot_wider:等效于使用“unstack”的结果
- c++ - const 指针的左值引用
- rust - 为什么多个可变引用无法将结构的成员分配给自身?