在博文中添加 next/previous 按钮
Adding a next/previous button in blog posts
我的页面上将显示所有博客文章。所以我想实现一个 next/previous 按钮来改善我的页面。
def PostLists(request):
num = request.session.get('num',-5)
request.session['num'] = num
num = num + 5
exp = Post.objects.order_by('-date').all()[num:(num+5)]
context = {
'object_list': exp
}
if (request.user.is_authenticated):
return render(request, 'dashboard/postlist.html', context=context)
else:
return redirect('login')
我在我的 html 代码中添加了一个下一步按钮,它会将我重定向到我上面显示的相同 views.py 函数,并且变量(num)将递增 5 从而显示我的下一个5个职位。然而,这似乎不起作用,因为我总是看到相同的 5 个帖子。
有没有更好的方法来实现 next/previous 按钮?如果是这样,你能具体说明吗?非常感谢!
我觉得你想自己做的太多了。 Django 对此有支持,它甚至在渲染列表时有很多支持,并强制用户登录。
我们可以为此使用基于class的视图:ListView
:
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import ListView
class PostListView(<b>LoginRequiredMixin, </b>ListView):
model = Post
template_name = 'dashboard/postlist.html'
<b>paginate_by</b> = 5
queryset = Post.objects.order_by('-date')
在您的 dashboard/postlist.html
模板中,您可以添加逻辑来呈现按钮。例如:
<!-- render the list -->
{% if <b>is_paginated</b> %}
{% if <b>page_obj.has_previous</b> %}
<a href="?page={{ <b>page_obj.previous_page_number</b> }}">previous</a>
{% endif %}
{% if <b>page_obj.has_next</b> %}
<a href="?page={{ <b>page_obj.next_page_number</b> }}">next</a>
{% endif %}
{% endif %}
在 urls.py
中,您可以使用 PostListView.as_view()
而不是 PostLists
。所以 ListView
将在这里处理身份验证检查、切片、分页等
我的页面上将显示所有博客文章。所以我想实现一个 next/previous 按钮来改善我的页面。
def PostLists(request):
num = request.session.get('num',-5)
request.session['num'] = num
num = num + 5
exp = Post.objects.order_by('-date').all()[num:(num+5)]
context = {
'object_list': exp
}
if (request.user.is_authenticated):
return render(request, 'dashboard/postlist.html', context=context)
else:
return redirect('login')
我在我的 html 代码中添加了一个下一步按钮,它会将我重定向到我上面显示的相同 views.py 函数,并且变量(num)将递增 5 从而显示我的下一个5个职位。然而,这似乎不起作用,因为我总是看到相同的 5 个帖子。
有没有更好的方法来实现 next/previous 按钮?如果是这样,你能具体说明吗?非常感谢!
我觉得你想自己做的太多了。 Django 对此有支持,它甚至在渲染列表时有很多支持,并强制用户登录。
我们可以为此使用基于class的视图:ListView
:
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import ListView
class PostListView(<b>LoginRequiredMixin, </b>ListView):
model = Post
template_name = 'dashboard/postlist.html'
<b>paginate_by</b> = 5
queryset = Post.objects.order_by('-date')
在您的 dashboard/postlist.html
模板中,您可以添加逻辑来呈现按钮。例如:
<!-- render the list -->
{% if <b>is_paginated</b> %}
{% if <b>page_obj.has_previous</b> %}
<a href="?page={{ <b>page_obj.previous_page_number</b> }}">previous</a>
{% endif %}
{% if <b>page_obj.has_next</b> %}
<a href="?page={{ <b>page_obj.next_page_number</b> }}">next</a>
{% endif %}
{% endif %}
在 urls.py
中,您可以使用 PostListView.as_view()
而不是 PostLists
。所以 ListView
将在这里处理身份验证检查、切片、分页等