Django 中的自定义分页标签
目录结构:

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 中的自定义分页标签的更多相关文章
- Struts2自定义标签4自定义分页标签
第一步:webroot/web-inf下的str.tld文件 <?xml version="1.0" encoding="UTF-8"?> < ...
- Django中的自定义过滤器
一.为什么要自定义Django中的自定义过滤器:Django中提供了很多内置的过滤器和标签,详见链接django官网,主要有以下几个: autoescape(自动转义)block(模板继承)csrf_ ...
- 第三百一十四节,Django框架,自定义分页
第三百一十四节,Django框架,自定义分页 自定义分页模块 #!/usr/bin/env python #coding:utf-8 from django.utils.safestring impo ...
- Java自定义分页标签的实现
主要字段含义: 页号 pagaNo页面大小 pageSize总记录条数 recordCount计算本次一共分多少页 myPageSize页号显示开始 start 页号显示结束 end PageTag需 ...
- 自定义分页标签,并使分页标签能获得url中的参数
如题,要实现一个分页功能,其次,要让分页标签“智能一点”,在分页时能自动带上url后面的参数 <tag> <description>分页标签</description&g ...
- python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)
一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 from app01 import views urlpatterns = [ path('admin/', admi ...
- (转)java web自定义分页标签
转载至http://liuxi1024.iteye.com/blog/707784 效果如图: 1.JSP规范1.1版本后增加了自定义标签库.实现自定义标签的步骤 (1)开发自定义标签处理类. (2) ...
- django cookie session 自定义分页
cookie cookie的由来 http协议是无状态的,犹如人生若只如初见,每次都是初次.由此我们需要cookie来保持状态,保持客户端和服务端的数据通信. 什么是cookie Cookie具体指的 ...
- Django模板之自定义过滤器/标签/组件
自定义步骤: 1. 在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 2. 在app应用中创建templatet ...
随机推荐
- CSS经验库
1.兼容360浏览器 字体大小设置 开发中需要使用em单位 font-size: 0.83em; font-family: "Arial"; -webkit-text-size-a ...
- ASP.NET绑定CHECKBOXLIST--------JQUERY绑定CLICK事件,获取CHECKBOX的VALUE和显示值
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs ...
- STL容器分析--vector
vector是一种动态数组,是基本数组的类模板. vector,支持随机访问.在数据结构上,属于顺序线性表. 而且,由于是动态数组,
- 聚合类新闻client的改进
zaker和鲜果是最早的聚合类新闻产品.前几年发展非常快.迅速占据了市场,但近两年发展变得缓慢.而今日头条自公布以来才两年.用户量就迅速超过了zaker和鲜果.使用起来非常easy,左右滑动 ...
- 求1,1,2,3,5,8,13 斐波那契数列第N个数的值
朋友问了个斐波那契算法.我给出了个递归算法 public static int Foo(int n) { ) { return n; } else { ) + Foo(n - ); } } 结果被打击 ...
- MySQL-group-replication 配置
MySQL-Group-Replication 是mysql-5.7.17版本开发出来的新特性:它在master-slave 之间实现了强一致性, 但是就目前来说主要是性能不太好. [1]确定当前的m ...
- 电脑不识别USB blaster驱动问题
电脑不识别USB blaster,如下图: 解决办法:手动更新 http://zhidao.baidu.com/link?url=snVT__AsbtmQ4U5EBVN05Yrgv1TPv7AdVYe ...
- Django项目国际化
Django项目国际化 实验环境: py3.4.3 + django1.8.2 + Windows 项目设置 >django-admin startproject I18nDjango > ...
- [android] 本地推送服务
遇到新需求:游戏要添加本地的推送功能,ios比较好搞,在应用退出时的系统回调中设置,android就稍稍麻烦一点,需要用到 android中的service,和receiver
- Java动态代理原理及其简单应用
概念 代理对象和被代理对象一般实现相同的接口,调用者与代理对象进行交互.代理的存在对于调用者来说是透明的,调用者看到的只是接口.代理对象则可以封装一些内部的处理逻辑,如访问控制.远程通信.日志.缓存等 ...