博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django分页(一)
阅读量:6877 次
发布时间:2019-06-26

本文共 5670 字,大约阅读时间需要 18 分钟。

Django分页(一)

 

 

手动实现简单分页

 

HTML

    
Title
{
% for user in user_list %}
  • {
    { user.name }} {
    { user.age }}
  • {
    % endfor %} {
    { prev_page }}
    上一页 {
    { next_page }}
    下一页
    View Code

     

     Views代码

    from django.shortcuts import render,HttpResponse,redirectfrom blog.models import *from django.views import View# Create your views here.USER_LIST=[]for i in range(888):    temp={'name':'root'+str(i),'age':i}    USER_LIST.append(temp)    per_page_count = 10  # 定义每页要显示多少行数据def get_index(request):    current_page=request.GET.get('p')#获取客户端传过来的参数,得到翻到哪一页    current_page = int(current_page)  # 字符--〉数字    start = (current_page - 1) * per_page_count  # 定义从哪一行开始    end = current_page * per_page_count  # 定义数据在哪一行结束    data = USER_LIST[start:end]  # 对数据进行切片    # p=1    # 0,10  0-9    # p=2    # 10,20 10-19    #上一页    prev_page=current_page-1#下一页    next_page=current_page+1    return render(request,"index.html",{'user_list':data,'prev_page':prev_page,'next_page':next_page})

      

     

     

     

    Django分页简单使用

     

    在html文件下创建include目录,然后把分页功能代码放入其中

    使用include引入功能html文件

    功能html文件如下:

    {% if posts.has_previous %}            Previous        {% endif %}		            Page {
    { posts.number }} of {
    { posts.paginator.num_pages }}.
    {% if posts.has_next %} Next {% endif %}

      

     

    HTML

        
    Title
      {
      % for user in posts.object_list %}
    • {
      { user.name }} {
      { user.age }}
    • {
      % endfor %}
    {
    % if posts.has_previous %}
    Previous {
    % endif %}
    Page {
    { posts.number }} of {
    { posts.paginator.num_pages }}.
    {
    % if posts.has_next %}
    Next {
    % endif %}
    View Code

     

     

    View代码

    from django.shortcuts import render,HttpResponse,redirectfrom blog.models import *from django.views import View# Create your views here.USER_LIST=[]for i in range(888):    temp={'name':'root'+str(i),'age':i}    USER_LIST.append(temp)    per_page_count = 10  # 定义每页要显示多少行数据from django.core.paginator import Paginator,EmptyPage,PageNotAnIntegerdef get_index1(request):    #django分页主要有两个对象:paginator与page对象    #如果这里是表的话models.表名.objects.all()来操作    #将表里所有的内容都放进去,每页显示10条记录    paginator=Paginator(USER_LIST,10) #实例化Paginator    #全部数据:USER_LIST    #per_page:每页显示条目数量    #count:数据据总个数    #num_pages:总页数    #page_range:总页数的索引范围    #page:page对象(是否有上一页,是否有下一页)    current_page=request.GET.get('p')    current_page = int(current_page)  # 字符--〉数字    print(current_page)    try:        posts = paginator.page(current_page)        # has_next              是否有下一页        # next_page_number      下一页页码        # has_previous          是否有上一页        # previous_page_number  上一页页码        # object_list           分页之后的数据列表        # number                当前页        # paginator             paginator对象        # print(posts.object_list)    except PageNotAnInteger:#如果输入内容不为整数,传入页面1        posts = paginator.page(1)    except EmptyPage:        posts = paginator.page(paginator.num_pages)    return render(request, 'index1.html', {'posts': posts})

      

     

     

     

     

    Django分页自定义使用

     

     功能html

    {% if posts.has_previous %}    Previous{% endif %}    {% for i in posts.paginator.page_num_range %}        {
    { i }}
    {% endfor %} {% if posts.has_next %} Next {% endif %}

      

    HTML

        
    Title
      {% for user in posts.object_list %}
    • {
      { user.name }} {
      { user.age }}
    • {% endfor %}
    {% include 'include/page1.html' %}

      

     

    View代码

    class CustomPaginator(Paginator):    def __init__(self, current_page, max_pager_num, *args, **kwargs):        """        :param current_page: 当前页        :param max_pager_num:最多显示的页码个数        :param args:        :param kwargs:        :return:        """        self.current_page = int(current_page)        self.max_pager_num = max_pager_num        super(CustomPaginator, self).__init__(*args, **kwargs)    def page_num_range(self):        # 当前页面        # self.current_page        # 总页数        # self.num_pages        # 最多显示的页码个数        # self.max_pager_num        print(1)        if self.num_pages < self.max_pager_num:            return range(1, self.num_pages + 1)        print(2)        part = int(self.max_pager_num / 2)        if self.current_page - part < 1:            return range(1, self.max_pager_num + 1)        print(3)        if self.current_page + part > self.num_pages:            return range(self.num_pages + 1 - self.max_pager_num, self.num_pages + 1)        print(4)        return range(self.current_page - part, self.current_page + part + 1)def get_index2(request):    current_page = request.GET.get('p')    current_page=int(current_page)    paginator = CustomPaginator(current_page, 11, USER_LIST, 10)    # per_page: 每页显示条目数量    # count:    数据总个数    # num_pages:总页数    # page_range:总页数的索引范围,如: (1,10),(1,200)    # page:     page对象    try:        posts = paginator.page(current_page)        # has_next              是否有下一页        # next_page_number      下一页页码        # has_previous          是否有上一页        # previous_page_number  上一页页码        # object_list           分页之后的数据列表        # number                当前页        # paginator             paginator对象        print(posts.object_list)    except PageNotAnInteger:        posts = paginator.page(1)    except EmptyPage:        posts = paginator.page(paginator.num_pages)    return render(request, 'index2.html', {'posts': posts})

      

     

    转载于:https://www.cnblogs.com/-wenli/p/10457614.html

    你可能感兴趣的文章
    纪念我曾经的 JAVA 姿势--转
    查看>>
    js 如何清除setinterval
    查看>>
    我为NET狂官方面试题-数据库篇答案
    查看>>
    聊聊eureka的delta配置
    查看>>
    Masonry 源码解读(下)
    查看>>
    Swift如何给应用添加3D Touch菜单
    查看>>
    JQuery文本框水印插件的简单实现
    查看>>
    手动fsck修复
    查看>>
    VBA在Excel中的应用(三)
    查看>>
    在 Ubuntu 16.04 上安装 LEMP 环境
    查看>>
    SQL Server profile使用技巧
    查看>>
    协议中UART的两种模式 【转】
    查看>>
    SharePoint 2013 Farm 安装指南——Least Privilege
    查看>>
    C# 温故知新 基础篇(1) C#概述
    查看>>
    jQuery结合lhgdialog弹出窗口,关闭时出现没有权限错误
    查看>>
    EXTJS学习系列提高篇:第二十八篇(转载)作者殷良胜,ext2.2打造Ext.form.ComboBox系列--分页显示...
    查看>>
    如何完成.Net下XML文档的读写操作
    查看>>
    QTP的那些事--对已经存在Excel文件修改后保存时,会弹出一个询问对话框
    查看>>
    UVA 11174 Stand in a Line 树dp+算
    查看>>
    C语言中函数strcpy ,strncpy ,strlcpy的用法【转】
    查看>>