(13)自定意义标签和过滤器 (templatetags)
过滤器分内置和自定意义
PS:过滤器可以用在for循环和if判断后,但是标签不能使用在for循环和if判断后
内置过滤器:
add(在模板中实现加减法)
default(就是当传入的变量是False的时候显示后面设定的字符,如果是True的时候就是显示True)
length(计算变量的长度)
filesizeformat*(将变量的值根据长度自动进行一个单位换算,不同长度显示不同的单位,kb\mb\tb)
date(将python中的时间对象变成自己设定的类型在页面中显示,date后面格式一定是一个字符串形式)、safe(就是将视图中的变量值原封不动的在页面中显示)
PS:过滤器的使用{{ 字符或者数字 |add:字符或者数字 }}
内置标签
for 循环、if 判断
自定义过滤器:步骤必须严格按照格式,最多只能传2个参数
1、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. #其实就是新建app的时候要在settings中配置
2、在app中创建templatetags模块(模块名只能是templatetags) #在app下要创建一个包 名字为templatetags,这个名字不能错误
3、创建任意 .py 文件,如:my_tags.py #名字随意命名,这个py文件内就是写自定意义过滤器的代码
4、在自定义过滤器的py文件内把django.template中的Library 导入
5、在自定义过滤器的py文件内定义一个变量是register = Library()
6、定义过滤器:在自己写的过滤器代码,即函数顶部加上@register.filter(is_safe=False)
7、使用自定义过滤器:
在模板中要用load导入自定义过滤器 {% load 自定义过滤器文件名%} #自定义过滤器
{{ 参数值 |自定义过滤器函数名 : 参数值 }} #前后的参数不限于字符或数字,根据需求写的过滤器的功能不同
PS:写好过滤器项目要重启 下,否则可能无法导入
PS:给过滤器重命名,可以在@register.filter(name='addrses') #这里括号里的name就是给过滤器重命名,以后调用时候直接用这个重命名的名字即可
自定义标签:在模板中使用,传入的参数不限
1、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. #其实就是新建app的时候要在settings中配置
2、在app中创建templatetags模块(模块名只能是templatetags) #在app下要创建一个包 名字为templatetags,这个名字不能错误
3、创建任意 .py 文件,如:my_tags.py #名字随意命名,这个py文件内就是写自定意义标签的代码
4、在自定义过滤器的py文件内把django.template中的Library 导入
5、在自定义过滤器的py文件内定义一个变量是register = Library()
6、定义过滤器:在自己写的过滤器代码,即函数顶部加上@register.simple_tag()
7、使用自定义标签:
在模板中用load导入自定义标签 {% load 自定义标签名%}
{% 自定义标签名 空格 参数1 空格 参数2 %} #格式就是标签名后面+空格——传入的参数,有多少参数就要写多少参数
自定义过滤器和标签实例:
my_filter.py #app01\templatetags 下
# 这里写的就是自定义过滤器的代码
from django.template import Library register = Library() @register.filter(is_safe=False)
def my_filters(a,b):
return a + b
views.py #这里一定要传参,否则报错
from django.shortcuts import render,HttpResponse # Create your views here. def index(request):
li = [1,2,3]
return render(request,'index.html',{'li':li})
urls.py
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'index/', views.index)
]
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>我是首页</h1>
{{ li }} <p>使用自定义过滤器</p>
{% load my_filter %}
{{ 1| my_filters:4 }} <p>使用自定义标签</p>
{% load my_label %}
{% my_labels 1 2 3 %}
</body>
</html>
过滤器用在if判断内
views.py #app下的
from django.shortcuts import render,HttpResponse # Create your views here. def index(request):
li = 1
return render(request,'index.html',{'li':li})
my_filter.py #app01\templatetags下的
# 这里写的就是自定义过滤器的代码
from django.template import Library register = Library() @register.filter(is_safe=False)
def my_filters(a,b):
return a + b
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>我是首页</h1>
{{ li }}
{#自定义过滤器用在if判断后 #}
{% load my_filter %}
{% if 1|my_filters:20 < 10 %}
<p>小于10</p>
{% else %}
<p>大于10</p>
{% endif %} </body>
</html>
urls.py
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'index/', views.index)
]
(13)自定意义标签和过滤器 (templatetags)的更多相关文章
- python 全栈开发,Day70(模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介)
		昨日内容回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ... 
- Django 模板    语法    变量     过滤器    模板继承      组件     自定义标签和过滤器         静态文件相关
		本节目录 一 语法 二 变量 三 过滤器 四 标签Tags 五 模板继承 六 组件 七 自定义标签和过滤器 八 静态文件相关 一 语法 模板渲染的官方文档 关于模板渲染你只需要记两种特殊符号(语法 ... 
- Django基础(2)--模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介
		没整理完 昨日回顾: 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 ... 
- Django模板自定义标签和过滤器,模板继承(extend),Django的模型层
		上回精彩回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ... 
- Django框架(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器
		目录 模板层:变量.过滤器.标签.自定义标签和过滤器 一.模板层变量 1.语法 2.使用 二.模板层之过滤器 1.语法 2.常用过滤器 3.其他过滤器 三.模板值标签 1.for标签 2.if标签 3 ... 
- Django标签和过滤器
		过滤器格式{{ }} 标签格式{% %} 模板中过滤器filter只能使用一个参数,自定义标签中则可以使用多个参数!!! 过滤器能够采用链式的方式使用,例如:{{ text | escape | ... 
- 模板继承and自定义模板标签和过滤器
		自定义模板标签和 过滤器: 因为模板标签和过滤器只给我们提供了 这么多 无法对我们的使用造成更多的便利 ,剩下的就需要我们自己去创建新的 模板标签和过滤器了 1.在settings中的INSTALLE ... 
- Django内建模版标签和过滤器
		第四章列出了许多的常用内建模板标签和过滤器.然而,Django自带了更多的内建模板标签及过滤器.这章附录列出了截止到编写本书时,Django所包含的各个内建模板标签和过滤器,但是,新的标签是会被定期地 ... 
- django中自定义标签和过滤器
		想要实现自定义标签和过滤器需要进行准备工作: 准备(必需)工作: 1 在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为polls的app下创建了一个tem ... 
随机推荐
- 自定义xadmin后台首页
			登陆xadmin后台,首页默认是空白,可以自己添加小组件,xadmin一切都是那么美好,但是添加小组件遇到了个大坑,快整了2个礼拜,最终实现想要的界面.初始的页面如图: 本机后台显示这个页面正常,do ... 
- ldap+flask+python2实现统一认证里面的那些编码神坑
			首先想吐槽下,直接接手别人的项目,而且是经过四五个人手的项目,是怎么个痛苦.两三套代码django.flask.tornado应有尽有,代码里,掰开手指头就可数的全英文注释,几台服务器没交接清楚,所有 ... 
- unity中手机触摸代码
			#elif UNITY_IOS || UNITY_ANDROID if(Input.touchCount <= 0) { return;/ ... 
- caffe模型参数解释
			作者:wjmishuai 出处: http://blog.csdn.net/wjmishuai/article/details/50890214 原始数据是28*28 1:数据层: layer { n ... 
- list的四种遍历方式
			1.手先增强for循环和iterator遍历的效果是一样的,也就说 增强for循环的内部也就是调用iteratoer实现的,但是增强for循环 有些缺点,例如不能在增强循环里动态的删除集合内容.不能获 ... 
- MyEclipse复制js文件乱码
			MyEclipse复制js文件乱码 右击js文件: 
- 3.9 C++多继承
			参考:http://www.weixueyuan.net/view/6366.html 总结: C++中一个派生类中允许有两个及以上的基类,我们称这种情况为多继承 使用多继承可以描述事物之间的组合关系 ... 
- vivado自动化tcl实现(更新中)
			ug1197-vivado-high-level-productivity vivado中如何使用自动化工具进行设计?用过的项目有AD9361提供的官方例子中,使用了自动化方式,可以借鉴. 
- JavaScript 基础,登录前端验证
			<script></script>的三种用法: 放在<body>中 放在<head>中 放在外部JS文件 <!DOCTYPE html> & ... 
- GNU C的定义长度为0的数组
			在标准C和C++中,长度为0的数组是被禁止使用的.不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很多人可能觉得不可思议,长度为0的数组是没有什么意义的,不过在 ... 
