zoukankan      html  css  js  c++  java
  • Django自定义分页

    • 自定义分页一:

    views:

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    from django.shortcuts import render,render_to_response
    from app01 import models

    # Create your views here. def index(request, page):#用于获取前台get传来的数据 #操作数据库进行分页 page = int(page)#此时需要进行整数运算,所以需要强制类型转换 #per_item = 5 #第一页0-5,(page-1)*5 page*5 start = (page-1)*5 end = page*5 count = models.host.objects.all()[start:end].count()#此时就是实现了一部分一部分的获取数据 data = models.host.objects.all()[start:end] ret = {'data':data,'count':count} return render_to_response('index.html',ret)

    index:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
            <h1>主机信息</h1>
            <table border="1" >
                {% for item in data %}
                    <tr >
                        <td>{{ item.hostname }}</td>
                        <td>{{ item.ip}}</td>
                        <br />
                    </tr>
                {% endfor %}
            </table>
            <div>总条数:{{ count }}</div>
    </body>
    </html>
    

    urls:

    from django.conf.urls import url,include
    from django.contrib import admin
    from app01 import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/(d+)', views.index),#id用于获取用户输入的页数
    ]
    

    models:

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    from django.db import models
    
    # Create your models here.
    class host(models.Model):
        hostname = models.CharField(max_length=256)
        ip = models.GenericIPAddressField()
    

    此时的页面:

    • 自定义分页二(进化版):

     views:

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    from django.shortcuts import render,render_to_response
    
    from app01 import models
    from django.utils.safestring import mark_safe
    # Create your views here.
    
    
    def index(request, page):
    
        #判断获取的 值是否为整数
        try:
            page = int(page)
        except Exception,e:
            page = 1
    
        per_item = 5
    
        start = (page-1)*5
        end = page*5
        count = models.host.objects.all().count()
        data = models.host.objects.all()[start:end]
    
        #判断需要分几页,divmod()是一个求商和余的函数
        temp = divmod(count,per_item)
        if temp[1] == 0:
            all_page_count = temp[0]
        else:
            all_page_count = temp[0]+1
    
        page_html=[]
        first_html = "<a href='/index/%d'>首页</a>"%(1,)
        page_html.append(first_html)
        for i in range(all_page_count):
            a_html = "<a href='/index/%d'>%d</a>"%(i+1,i+1)
            page_html.append(a_html)
        end_html = "<a href='/index/%d'>尾页</a>" % (all_page_count,)
        page_html.append(end_html)
        page = mark_safe(''.join(page_html))#想要在页面上显示关键字就必须要确认他不是类似跨站脚本的东西
    
    
    
        ret =  {'data':data,'count':count,'page':page}
    
        return render_to_response('index.html',ret)
    

    html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
    
    </head>
    <body>
            <h1>主机信息</h1>
            <table border="1" >
                {% for item in data %}
                    <tr >
                        <td>{{ item.hostname }}</td>
                        <td>{{ item.ip}}</td>
                        <br />
                    </tr>
                {% endfor %}
            </table>
            <div>总条数:{{ count }}</div>
            {{ page }}
    </body>
    </html>
    

    其余一样

    显示页面:

    • 自定义分页(第三种):

    views:

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    from django.shortcuts import render,render_to_response
    
    from app01 import models
    from django.utils.safestring import mark_safe
    # Create your views here.
    
    
    def index(request, page):
    
        #判断获取的 值是否为整数
        try:
            page = int(page)
        except Exception,e:
            page = 1
    
        per_item = 5
    
        start = (page-1)*5
        end = page*5
        count = models.host.objects.all().count()
        data = models.host.objects.all()[start:end]
    
        #判断需要分几页,divmod()是一个求商和余的函数
        temp = divmod(count,per_item)
        if temp[1] == 0:
            all_page_count = temp[0]
        else:
            all_page_count = temp[0]+1
    
        page_html=[]
    
        first_html = "<a href='/index/%d'>首页</a>" % (1,)
        page_html.append(first_html)
    
        if page == 1:
            prv_html = "<a href='/index/#'>上一页</a>"
        else:
            prv_html =  "<a href='/index/%d'>上一页</a>"%(page-1,)
        page_html.append(prv_html)
    
    
    
    
        for i in range(all_page_count):
            if page == i+1:
                a_html = "<a style='color:red;' href='/index/%d'>%d</a>"%(i+1,i+1)
            else:
                a_html = "<a href='/index/%d'>%d</a>"%(i+1,i+1)
            page_html.append(a_html)
    
        next_html = "<a href='/index/%d'>下一页</a>" % (page+1,)
        page_html.append(next_html)
    
        end_html = "<a href='/index/%d'>尾页</a>" % (all_page_count,)
        page_html.append(end_html)
        page = mark_safe(''.join(page_html))#想要在页面上显示关键字就必须要确认他不是类似跨站脚本的东西
    
    
    
        ret =  {'data':data,'count':count,'page':page}
    
        return render_to_response('index.html',ret)
    

      

    •  自定义分页(第四种):
    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    from django.shortcuts import render,render_to_response
    
    from app01 import models
    from django.utils.safestring import mark_safe
    # Create your views here.
    
    
    def index(request, page):
    
        #判断获取的 值是否为整数
        try:
            page = int(page)
        except Exception,e:
            page = 1
    
        per_item = 3
    
        start = (page-1)*per_item
        end = page*per_item
        count = models.host.objects.all().count()
        data = models.host.objects.all()[start:end]
    
        #判断需要分几页,divmod()是一个求商和余的函数
        temp = divmod(count,per_item)
        if temp[1] == 0:
            all_page_count = temp[0]
        else:
            all_page_count = temp[0]+1
    
        page_html=[]
    
        first_html = "<a href='/index/%d'>首页</a>" % (1,)
        page_html.append(first_html)
    
        if page == 1:
            prv_html = "<a href='/index/#'>上一页</a>"
        else:
            prv_html =  "<a href='/index/%d'>上一页</a>"%(page-1,)
        page_html.append(prv_html)
    
        #当所分的页数特别多时,需要微量显示
        if all_page_count < 11:
            begin = 0
            end = all_page_count
        else:
            if page < 6:
                begin = 0
                end = 12
            else:
                if page + 6> all_page_count:
                    begin = page -5
                    end = all_page_count
                else:
                    begin = page - 5
                    end = page + 6
    
        for i in range(begin,end):
            if page == i+1:
                a_html = "<a style='color:red;' href='/index/%d'>%d</a>"%(i+1,i+1)
            else:
                a_html = "<a href='/index/%d'>%d</a>"%(i+1,i+1)
            page_html.append(a_html)
    
        next_html = "<a href='/index/%d'>下一页</a>" % (page+1,)
        page_html.append(next_html)
    
        end_html = "<a href='/index/%d'>尾页</a>" % (all_page_count,)
        page_html.append(end_html)
        page = mark_safe(''.join(page_html))#想要在页面上显示关键字就必须要确认他不是类似跨站脚本的东西
    
    
    
        ret =  {'data':data,'count':count,'page':page}
    
        return render_to_response('index.html',ret)
    

      

     

     

  • 相关阅读:
    程序员的7中武器
    需要强化的知识
    微软中国联合小i推出MSN群Beta 不需任何插件
    XML Notepad 2006 v2.0
    Sandcastle August 2006 Community Technology Preview
    [推荐] TechNet 广播 SQL Server 2000完结篇
    《太空帝国 4》(Space Empires IV)以及 xxMod 英文版 中文版 TDM Mod 英文版 中文版
    IronPython 1.0 RC2 更新 1.0.60816
    Microsoft .NET Framework 3.0 RC1
    《Oracle Developer Suite 10g》(Oracle Developer Suite 10g)V10.1.2.0.2
  • 原文地址:https://www.cnblogs.com/bill2014/p/6979022.html
Copyright © 2011-2022 走看看