目录结构:

1.在应用下,migrations的同级目录创建templatetags目录(主要两个文件,包含__init__.py)

2.创建分页标签(pagetag.py)

 #!/usr/bin/env python
# _*_ coding:utf-8 _*_ from django import template
from django.utils.html import format_html # 注册标签
register = template.Library()
@register.simple_tag
def circle_page(curr_page,loop_page):
offset = abs(curr_page - loop_page)
if offset < 3:
if curr_page == loop_page:
page_ele = '<li class="active"><a href="?page=%s">%s</a></li>'%(loop_page,loop_page)
else:
page_ele = '<li><a href="?page=%s">%s</a></li>'%(loop_page,loop_page)
return format_html(page_ele)
else:
return ''

3.在view.py中将数据分页处理

 # 数据分析
def analysisMovie(request):
movies = AnalysisMovie.objects.all().filter(is_delete='')
# 分页
paginator = Paginator(movies, 25, 2) # Show 25 contacts per page
page = request.GET.get('page')
try:
contacts = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
contacts = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
contacts = paginator.page(paginator.num_pages)
context = {'contacts': contacts}
return render(request,'analysis.html',context=context)

4.在url.py中设置指向

url(r'^analysis/$', views.analysisMovie),

5.在analysis.html中数据展示(部分)

 {% load pagetag %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数据分析</title>
<!-- 全局样式 -->
<link rel="stylesheet" href="/static/css/global.css">
<!-- 导航菜单样式 -->
<link rel="stylesheet" href="/static/navigation.css">
<!-- 数据展现表格样式 -->
<link rel="stylesheet" href="/static/table.css">
<!-- bootstrap样式 -->
<link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.css">
<link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap-theme.min.css">
<script type="text/javascript" src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script> </head>
<body> <div class="panel-body">
<form>
<div class="input-group col-md-3" style="margin-top:0px;positon:relative">
<input type="text" class="form-control" placeholder="请输入明星"/>
<span class="input-group-btn">
<button class="btn btn-info btn-search">查找</button>
<button class="btn btn-info btn-search" style="margin-left:3px">添加</button>
</span>
</div>
<table id="hor-minimalist-a" align="center">
<tr>
<th>演员</th>
<th>电影名称</th>
<th>评分</th>
<th>类型</th>
<th>评论数</th>
</tr>
{% for movie in contacts %}
<tr>
<td>
{{ movie.actor_name }}
</td>
<td>
{{ movie.movie_name }}
</td>
<td>
{% if movie.movie_mark == 0 %}
暂无评分
{% else %}
{{ movie.movie_mark }}分
{% endif %}
</td>
<td>
{{ movie.movie_type }}
</td>
<td>
{% if movie.movie_rating_num == '' %}
暂无评论
{% else %}
{{ movie.movie_rating_num }}
{% endif %}
</td> </tr>
{% endfor %} </table>
<!-- 分页 -->
<nav aria-label="Page navigation">
<ul class="pagination">
{% if contacts.has_previous %}
<li>
<a href="?page={{ contacts.previous_page_number }}" aria-label="Previous">
<span aria-hidden="true">上一页</span>
</a>
<a href="?page=1" aria-label="First">
<span aria-hidden="true">首页</span>
</a>
</li>
{% endif %}
{% for pg in contacts.paginator.page_range %}
{% circle_page contacts.number pg %}
{% endfor %} {% if contacts.has_next %}
<li>
<a href="?page={{ contacts.paginator.num_pages }}" aria-label="Last">
<span aria-hidden="true">尾页</span>
</a>
<a href="?page={{ contacts.next_page_number }}" aria-label="Next">
<span aria-hidden="true">下一页</span>
</a>
{% endif %}
</li>
</ul>
</nav>
</form>
</div>

6.效果

Django 中的自定义分页标签的更多相关文章

  1. Struts2自定义标签4自定义分页标签

    第一步:webroot/web-inf下的str.tld文件 <?xml version="1.0" encoding="UTF-8"?> < ...

  2. Django中的自定义过滤器

    一.为什么要自定义Django中的自定义过滤器:Django中提供了很多内置的过滤器和标签,详见链接django官网,主要有以下几个: autoescape(自动转义)block(模板继承)csrf_ ...

  3. 第三百一十四节,Django框架,自定义分页

    第三百一十四节,Django框架,自定义分页 自定义分页模块 #!/usr/bin/env python #coding:utf-8 from django.utils.safestring impo ...

  4. Java自定义分页标签的实现

    主要字段含义: 页号 pagaNo页面大小 pageSize总记录条数 recordCount计算本次一共分多少页 myPageSize页号显示开始 start 页号显示结束 end PageTag需 ...

  5. 自定义分页标签,并使分页标签能获得url中的参数

    如题,要实现一个分页功能,其次,要让分页标签“智能一点”,在分页时能自动带上url后面的参数 <tag> <description>分页标签</description&g ...

  6. python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)

    一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 from app01 import views urlpatterns = [ path('admin/', admi ...

  7. (转)java web自定义分页标签

    转载至http://liuxi1024.iteye.com/blog/707784 效果如图: 1.JSP规范1.1版本后增加了自定义标签库.实现自定义标签的步骤 (1)开发自定义标签处理类. (2) ...

  8. django cookie session 自定义分页

    cookie cookie的由来 http协议是无状态的,犹如人生若只如初见,每次都是初次.由此我们需要cookie来保持状态,保持客户端和服务端的数据通信. 什么是cookie Cookie具体指的 ...

  9. Django模板之自定义过滤器/标签/组件

    自定义步骤: 1.     在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 2.     在app应用中创建templatet ...

随机推荐

  1. HDOJ 5418 Victor and World 状压DP

    水状压DP Victor and World Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/131072 K (Java ...

  2. unity, itween 对不透明对象使用FadeTo需要先更换material

    跟自己实现fade一样,使用itween对不透明对象FadeTo前也要先更换material为透明material. 设player的Hierarchy如下: player --aniRoot --- ...

  3. setTime

    var getTime = function() { var _ = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09'], //补 ...

  4. TextView中超链接拦截

    TextView中的超链接点击时,其实是通过Intent方式的,因此会调用Activity中的startActivity(Intent intent)方法,所以可在此方法中做些简单的拦截操作 例如拦截 ...

  5. Java多线程之内置锁与显示锁

    Java中具有通过Synchronized实现的内置锁,和ReentrantLock实现的显示锁,这两种锁各有各的好处,算是互有补充,今天就来做一个总结. Synchronized 内置锁获得锁和释放 ...

  6. java虚拟机的逃逸分析

    逃逸分析作为其他优化手段提供依据的分析技术,其基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用,例如作为调用参数传递到其他方法中,称为方法逃逸.甚至还有可能被外部线程 ...

  7. centos 6.5 安装mysql 5.7.21 community

    Step1: 检测系统是否自带安装mysql # yum list installed | grep mysql Step2: 删除系统自带的mysql及其依赖命令: # yum -y remove ...

  8. 数据库设计(四)数据库的规范化(Normalization)

    数据库的规范化 Database Normalization is a technique of organizing the data in the database. Normalization ...

  9. iReport4.6.0图表操作

    做报表.图表肯定是少不了的.尽管是疲惫的周一工作还是要做啊... 第一步:创建一个新的空白项目,数据源创建这个网上非常多资料,不是本章重点就不再详述 第二步:iReport界面,窗体->组件面板 ...

  10. 【Mac + Python3.6 + ATX基于facebook-wda】之IOS自动化(三):facebook-wda库--API学习以及附录:Github上对WDA的问题解答

    下面简单介绍facebook-wda库--API的学习 import wda # debug模式,会在run运行时控制台生成消息 wda.DEBUG = False # False 关闭,True开启 ...