1. 1.urls.py
  2. url(r'^page2/',views.page2),
  3. 2.views.py
  4. from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage
  5. def page2(request):
  6. customer_list=models.UserType.objects.all()
  7. paginator=Paginator(customer_list,10)
  8. page = request.GET.get('p')
  9. try:
  10. customer_objs=paginator.page(page)
  11. except PageNotAnInteger:
  12. customer_objs=paginator.page(1)
  13. except EmptyPage:
  14. customer_objs=paginator.page(paginator.num_pages)
  15. return render(request,'page2.html',{'customer_list':customer_objs})
  16. 3.page2.html
  17. {% load custom_tags %}
  18. <style>
  19. .active{
  20. background: gold;
  21. }
  22. </style>
  23. <table>
  24. <thead>
  25. <tr>
  26. <th>ID</th>
  27. <th>name</th>
  28. </tr>
  29. </thead>
  30. <tbody>
  31. {% for item in customer_list %}
  32. <tr>
  33. <td>{{ item.id }}</td>
  34. <td>{{ item.caption }}</td>
  35. </tr>
  36. {% endfor %}
  37. </tbody>
  38. </table>
  39. <br>
  40. <div class="pagination">
  41. <nav>
  42. {% if customer_list.has_previous %}
  43. <span class="#"><a href="?p={{ customer_list.previous_page_number }}" aria-label="Previous"><span aria-hidden="true">«</span></a></span>
  44. {% endif %}
  45. {% for page_num in customer_list.paginator.page_range %}
  46. {% guess_page customer_list.number page_num %}
  47. {% endfor %}
  48. {% if customer_list.has_next %}
  49. <span class="#"><a href="?p={{ customer_list.next_page_number }}" aria-label="Next"><span aria-hidden="true">»</span></a></span>
  50. {% endif %}
  51. </nav>
  52. </div>
  53. 4.自定义模板函数
  54. app01/templatetags/custom_tags.py
  55. from django import template
  56. from django.utils.html import format_html
  57. register=template.Library()
  58. @register.filter
  59. def _lower(val):
  60. print('-----val',val)
  61. return val.lower()
  62. @register.simple_tag
  63. def guess_page(current_page,loop_num):
  64. offset=abs(current_page-loop_num)
  65. if offset < 3:
  66. if current_page == loop_num:
  67. page_ele='<span class="active"><a href="?p=%s">%s</a></span>'%(loop_num,loop_num)
  68. else:
  69. page_ele='<span class=""><a href="?p=%s">%s</a></span>'%(loop_num,loop_num)
  70. return format_html(page_ele)
  71. else:
  72. return ""

django【原生分页】的更多相关文章

  1. 第二十一章 Django的分页与cookie

    第二十一章 Django的分页与cookie 第一课 模板 1.模板的继承 在Template目录下新建模板master.html <!DOCTYPE html> <html lan ...

  2. Python Django的分页,Form验证,中间件

    本节内容 Django的分页 Form 中间件 1 Django 分页 1.1 Django自带的分页 1.首先来看下我的测试数据环境 ############ models.py ######### ...

  3. Django----列表分页(使用Django的分页组件)

    目的:是为了实现列表分页 1.定制URL http://127.0.0.1:8000/blog/get_article?page=3之前定制URL是在url后增加了/id,这次使用参数的方式 def ...

  4. django原生sql查询如何返回字典格式

    django原生sql查询,默认返回的是元祖.如果想返回字典格式,需要自行封装: http://www.360doc.com/content/17/0802/11/9200790_676042880. ...

  5. Django—自定义分页

    分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页 ...

  6. reverse(两种反向生成url django原生形式和rest_framework中版本的形式)

    reverse(两种反向生成url django原生形式和rest_framework中版本的形式) views.py from django.shortcuts import render,Http ...

  7. 使用Ajax (put delete ) django原生CBV 出现csrf token解决办法

    原因 django原生CBV中对于 Ajax put 或 delete 请求进行封装时,会把请求数据放在 request.body里, 所以获取不到csrf token 方式一: 关闭csrf 中间件 ...

  8. Django自定义分页并保存搜索条件

    Django自定义分页并保存搜索条件 1.自定义分页组件pagination.py import copy class Pagination: def __init__(self, current_p ...

  9. Django DRF 分页

    Django DRF 分页 分页在DRF当中可以一共有三种,可以通过setttings设置,也可也通过自定义设置 PageNumberPagination 使用URL http://127.0.0.1 ...

  10. django之分页,纯python代码

    Django中分页 py文件代码 """ 自定义分页组件 可以返回分页的数据和分页的HTML代码 """ from django.http ...

随机推荐

  1. Android最流行的网络框架(原创)

    Android程序最重要的模块就是网络部分,如何从网络上下载数据,如何将处理过的数据上传至网络,往往是android程序的关键环节.        Android原生提供基于HttpClient和Ht ...

  2. 使用JSP实现用户登录

    本文讲述使用JSP实现用户登录,包括用户登录.注册和退出功能等. 1.系统用例图 2.页面流程图 3.数据库设计 本例使用oracle数据库 创建用户表 包括id,username,password和 ...

  3. 02 SQL 执行

    sql 被保存在 share pool 后, 开始解析, 解析包括语句的语法, 检验及对象, 以确认该用于是否有该对象的权限, 如果这些都通过了, 接下来就要看这个语句之前是否被执行过, 如果是, o ...

  4. $.messager.show扩展:指定位置显示

    扩展了个$.messager.showBySite,根据舍得的位置显示$.messager.show.代码如下: /** * 指定位置显示$.messager.show * options $.mes ...

  5. Tensorflow之合并tensor

    https://www.tensorflow.org/versions/r0.12/api_docs/python/array_ops.html#concat 例子: t1 = [[1, 2, 3], ...

  6. GET 还是 POST?

    GET 还是 POST? 与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用. 然而,在以下情况中,请使用 POST 请求: 无法使用缓存文件(更新服务器上的文件或数据库) 向服务器发 ...

  7. WebSocket入门教程(五)-- WebSocket实例:简单多人聊天室

    from:https://blog.csdn.net/u010136741/article/details/51612594 [总目录]   WebSocket入门教程--大纲   [实例简介]   ...

  8. 解决百度地图Fragment切换黑屏问题

    https://blog.csdn.net/rentalphang/article/details/52076330 轻松解决啦!

  9. Http服务器实现文件上传与下载(三)

    一.引言 在前2章的内容基本上已经讲解了整个的大致流程.在设计Http服务器时,我设计为四层的结构,最底层是网络传输层,就是socket编程.接着一层是请求和响应层,叫做Request和Respons ...

  10. python技巧之下划线(二)

    Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用’from module import *’导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划 ...