在django框架中,分页有原生分页和django自带的分页功能,此篇文章主要向大家展示django框架中自带的分页功能。阅读此文章需要对python和django框架有一些基础。好了,废话少说,马上步入正题。
app配置URL
from django.conf.urls import urlfrom . import viewsurlpatterns=[ url(r'^$',views.index_view), url(r'^page/(\d+)$',views.index_view), ]
创建视图
# 实现功能为:根据每页需要显示多少条数据,对总共的数据进行分页# 每次显示10页内容,类似百度分页# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.shortcuts import renderfrom django.core.paginator import Paginatorfrom .models import *# Create your views here.def get_post_by_num(num): # num为前端传过来的页码数,转换int类型 # 分页需要用到 Paginator 这个关键的模块 num = int(num) # per_page字段是每页显示多少条数据,这里设置1是每页1条数据 page_posts=Paginator(Post.objects.order_by("-created"),per_page=1) #每页开始页码 begin = (num-int(math.ceil(10.0/2))) if begin<1: begin = 1 # 每页结束页码 end = begin+9 if end >page_posts.num_pages: end = page_posts.num_pages if end <=10: begin = 1 else: begin = end -9 pagelist = range(begin,end+1) return page_posts.page(num),pagelistdef index_view(request,num='1'): # 查询第一页的数据 page_posts,page_range= get_post_by_num(num) return render(request,'index.html',{'page_posts':page_posts,'page_range':page_range})
创建模版
{% for post in page_posts.object_list %} class=
class="article-meta"> class="article-date">
{{ post.created|date:'Y年m月d日' }}
class="article-category"> class="article-category-link" href="#" target="_blank">{{ post.category.cname }}
class="article-inner"> class="article-header">
"name"
"name"
>
class="article-title" href="#" target="_blank">{{ post.title }}
class="article-entry" itemprop="articleBody">
前言
前言
{{ post.desc }}
class
="article-more-link">
"/post/{{ post.id }}" target="_blank">阅读全文
class="article-footer">
"存放文章的url" class="article-share-link">分享
class="article-tag-list">
{% for tag in post.tags.all %}
class="article-tag-list-item">
class="article-tag-list-link" href="#">{{ tag.tname }}
{% endfor %}
{% endfor %} "page-nav"> {% if page_posts.has_previous %} class= {% endif %} {% for page in page_range %} {% if page_posts.number == page %} class="page-number current">{{ page }} {% else %} class= {% endif %} {% endfor %} {% if page_posts.has_next %} class= {% endif %} {% endblock main %}