django分页功能,templatetags的应用
django 将不会将得到的html代码自动转化
from django.utils.html import format_html html =''' <a href='http://www.china.cn'>中国</a>''' format_html(html)
django分页
分页功能基本操作
from django.core.import Paginator li=[11,12,13,22,24,25]
p=Paginator(li,3) #将li传入,每页显示3条
p.count 6 共有多少个元素
p.num_pages 2 共有多少页
p.page_range (1,3) 页码范围
p1=p.page(1) 取第一页
p2=p.page(2) 取第二页
p1.object_list [11,12,13] 页码的元素列表
p1.number 1 查询自己是多少页
p1.has_next() True 是否有下一页
p1.has_previous() False 是否有上一页
p1.has_other_pages() True 是否有其他页
p1.next_page_number() 2 下一页的页码
p1.previous_page_number() 上一页的页码
后端代码 views.py
from django.shortcuts import render
from django.core.paginator import Paginator,EmptyPage, PageNotAnInteger
from app import models def index(request):
article_obj = models.Aticle.objects.all()
paginator = Paginator(article_obj,5)
page = request.GET.get('page')#取到url的page值 www.xxx.com/?page=xxx
try:
contacts = paginator.page(page)
except PageNotAnInteger:
#如果不是page不是数字
contacts = paginator.page(1)
except EmptyPage:
#如果page不存在 即超出范围
contacts = paginator.page(paginator.num_pages)
return render(request,'duanzi/index.html',{'contacts': contacts,})
前端代码
{% load tags %}
<!DOCTYPE html>
<html>
<head> <title>django web</title>
</head>
<div class='content'>
{% for article in contacts %}
<a href="{% url "article" article.id %}" target="_blank">{{ article.title }}</a>
{%endfor%}
</div>
<div class="page">
<a href="{% url 'index' %}">首页</a>
{% if contacts.has_previous %}
<a href="?page={{ contacts.previous_page_number }}">上页</a>
{% endif %}
{% for pagenum in contacts.paginator.page_range %}
{% www 'pagenum contacts.number' as Y %}
{% if Y %}
{% if pagenum == contacts.number %}
<span class="current">{{ pagenum }}</span>
{% else %}
<a href="?page={{ pagenum }}">{{ pagenum }}</a>
{% endif %}
{% endif %}
{% endfor %}
{% if contacts.has_next %}
<a href="?page={{ contacts.next_page_number }}">下页</a>
{% endif %}
<a href="?page={{ contacts.paginator.num_pages }}">尾页</a>
</div>
前端代码
在app在新建templatetags模块文件夹,再新建一个tags.py文件
tags.py文件代码
from django import template register = template.Library() @register.simple_tag
def www(pagenum,num):
if -4<=pagenum-num<=4:
return True
else:
return False templetatag 主要用到两个类 @register.filter 作为过滤方法使用 只能添加一个参数 模板中的应用方法为{% args | 函数名 %} @register.simple_tag 可以添加两个参数 模板中的应用方法为{% 函数名 参数1 参数2 } 扩展方法: as方法
{% 函数名 参数1 参数2 as y } 赋值为x 同python as方法一样
使用时在html文件 使用load方法{% load tags %} tags:文件名
官方手册
https://docs.djangoproject.com/en/1.9/topics/pagination/
https://docs.djangoproject.com/es/1.9/howto/custom-template-tags/
django分页功能,templatetags的应用的更多相关文章
- Django 分页功能
Django 分页功能比较强大,这边是结合官网的内容写的可以参考 https://docs.djangoproject.com/en/1.9/topics/pagination/ 分页命令行练习案列 ...
- Django——分页功能Paginator
Django分页功能----Paginator Paginator所需参数: Paginator(object_list,per_page) Paginator常用属性: per_page: 每页显示 ...
- 2 django系列之django分页与templatetags
preface 当页面出现的条目多的时候,我们就需要使用分页功能了.Django作为一个知名的web框架,自然也提供了分页功能,下面说说它. Python-shell 练练手 在python下入手 先 ...
- django分页功能实现
django内置的分页功能需要引入内置模块from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger Pagina ...
- [oldboy-django][2深入django]分页功能
1 django自带分页 1.1 分页模板 <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- django分页功能
采用django自带的Paginator功能 from django.core.paginator import Paginator food = foodInfo.objects.filter(fo ...
- Django自定制分页功能
URL: """django_paginner URL Configuration The `urlpatterns` list routes URLs to views ...
- django 分页组件
一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib i ...
- python_way day18 html-day4, Django路由,(正则匹配页码,包含自开发分页功能), 模板, Model(jDango-ORM) : SQLite,数据库时间字段插入的方法
python_way day18 html-day4 1.Django-路由系统 - 自开发分页功能 2.模板语言:之母板的使用 3.SQLite:model(jDango-ORM) 数据库时间字 ...
随机推荐
- CodeForcesGym 100735D Triangle Formation
Triangle Formation Time Limit: Unknown ms Memory Limit: 65536KB This problem will be judged on CodeF ...
- (38)Spring Boot分布式Session状态保存Redis【从零开始学Spring Boot】
[本文章是否对你有用以及是否有好的建议,请留言] 在使用spring boot做负载均衡的时候,多个app之间的session要保持一致,这样负载到不同的app时候,在一个app登录之后,而访问到另外 ...
- noip模拟赛 可耻
题目描述 给定一个长度为偶数的排列 p,你每次可以选取 p 排列中相邻的两个元素,假如分别是 x 和 y,那 么把 x 和 y 加入一个序列 q 的末尾,并将 x 和 y 从排列 p 中删除.重复上述 ...
- MapReduce Shuffle优化方向
Shuffle过程介绍可以查看该博客:http://langyu.iteye.com/blog/992916 优化方向: 压缩:对数据进行压缩,减少写读数据量: 减少不必要的排序:并不是所有类型的Re ...
- http-runtime属性
配置httpRuntime也可以让FileUpload上传更大的文件,不过设置太大了会因用户将大量文件传递到该服务器而导致的拒绝服务攻击(属性有说明) 属性 属性 选项 说明 appRequestQu ...
- cogs 22. [HAOI2005] 路由选择问题
22. [HAOI2005] 路由选择问题 ★★★ 输入文件:route.in 输出文件:route.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] X城有一个 ...
- 在shell脚本中使用函数的返回值
#!/bin/bash - function mytest() { echo "arg1 = $1" if [ $1 = "1" ] ;then return ...
- VCenter中嵌套openstack VM不能ping通外部网络问题解决的方法
问题描写叙述: 近期搭建了vCenter环境,并使用vCenter创建的VM搭建了一套openstack环境.在验证openstack的外网功能时.发现报文死活ping不通外网,抓包发现报文在vcen ...
- jsencrypt代码分析
jsencrypt代码分析——openssl的rsa加密解密在js的实现 在js上做rsa,感觉jsencrypt这个是封装的比较好的,但用起来还是遇到了些坑,所以踩进代码里填填坑- 项目在这里 ...
- Java-JDK:JDK百科
ylbtech-Java-JDK:JDK百科 JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(J ...