效果图:
代码实现:
前端部分:
<!-- 文章显示部分 -->
{%for a in page%}
<div id="article">
<div id="article_info_left">
<div id="article_title" ><a href="{{a.url_1}}" style="color:black;">{{a.title_1}}</a></div>
<div id="article_info">
{{a.content_1}}
</div>
<div id="article_comment">
<ul>
<li><a href="javascript:void(0)" class="share"><img src="/static/images/share.png" width="15px" height="16px" style="padding-bottom:3px;"><span style="padding-left: 6px;font-size: 10px;color:#C0C0C0;">分享</span></a></li>
<li id="li"><a href="#"><img src="/static/images/heart_2.png" width="16px" height="16px" style="padding-bottom:1px;"><span style="padding-left: 6px;font-size: 10px;color:#C0C0C0;">12{{num}}</span></a></li>
</ul>
</div>
</div>
<div id="article_info_right" >
<div id="img">
<img src="/static/article_img/1.png" width="200px" height="128px" style="border:1px solid #f0f0f0;margin-left: 16px;">
</div>
</div>
</div>
{% endfor %}
<!-- 翻页部分 -->
<div id="page">
<div style="margin-left:330px;float: left;">
<ul class="pagination">
{# 如果当前页还有上一页 #}
{% if page.has_previous %}
<li>
{# 点击a标签,跳转到上一页链接 ?index 为地址后面拼接的参数 #}
<a href="/visplat/home?p={{page.previous_page_number}}">上一页</a>
</li>
{% else %}
{# 如果没有上一页, 则上一页按钮不可点击 #}
<li >
<a href="/visplat/home/">上一页</a>
</li>
{% endif %}
<li>
<a>Page {{page.number}} Of {{ paginator.num_pages }}</a>
</li>
{% if page.has_next %}
<li>
<a href="/visplat/home?p={{page.next_page_number}}">下一页</a>
</li>
{% else %}
<li >
<a href="/visplat/home/">下一页</a>
</li>
{% endif %}
</ul>
</div>
</div>
后台:
from django.shortcuts import render
from .models import *
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage, InvalidPage#翻页模块
def Home(request):
article=Atitle.objects.all()
# 将数据按照规定每页显示 7 条, 进行分割
paginator = Paginator(article, 6)
# 获取 url 后面的 page 参数的值, 首页不显示 page 参数, 默认值是 1
page = request.GET.get('p')
try:
Page = paginator.page(page)
# todo: 注意捕获异常
except PageNotAnInteger:
# 如果请求的页数不是整数, 返回第一页。
Page = paginator.page(1)
except InvalidPage:
# 如果请求的页数不存在, 重定向页面
return HttpResponse('找不到页面的内容')
except EmptyPage:
# 如果请求的页数不在合法的页数范围内,返回结果的最后一页。
Page = paginator.page(paginator.num_pages)
return render(request, "home.html", {'page':Page,'paginator':paginator})