自定义标签过滤器

 1 2 模版之过滤器
 2         -语法:{{第一个参数|过滤器名字:第二个参数}}
 3         -常用过滤器:(详细用法见源码)
 4             -length
 5             -default
 6             -slice
 7             -date
 8             -filesizeformat
 9             -truncatechars
10             -truncatewords
11             -safe
12             -add
13     3 模版之标签
14         -{% 标签 %}
15         -for:forloop:对象(里面有好多东西:parentloop,last,first,counter....)忘记的话,    自己打印一下
16             empty:被循环的对象是空,才走它
17             for循环可以嵌套,也可以用if
18         -if:
19             {% if forloop.first %}
20                 <p>第一次的我 </p>
21             {% elif forloop.last %}
22                 <p>最后的我 </p>
23             {% else %}
24                 <p>{{ foo }}</p>吧
25             {% endif %}
26         -with:重命名,应用在变量名过长
27         ********都要有结束********
28
29     4 自定义标签和过滤器
30         --***标签不能用在if判断,过滤器,可以用在if判断
31         -自定义过滤器
32             -1 先app是不是已经在setting中注册
33             -2 在app下创建一个templatetags(****名字不能变***)的文件夹(模块)
34             -3 在模块下创建一个py文件,名字随意:mytag.py
35             -4 # 第一步,导入template
36                from django.template import Library
37                # 第二步,定义一个叫register的变量=template.Library()
38                register = Library()
39             -5 写一个函数,用@register.filter(name=‘yyy‘)装饰一下(可以指定别名)
40                 def str_add(str1, str2): #一定要有返回值
41                     # 业务逻辑很复杂
42                     return str1 + str2
43             -6 在模板里:(新定定义的标签,过滤器,都要重启程序)
44                 -{% load mytag %}
45                 -{{‘lqz‘|str_add:‘nb‘}}
46         -自定义标签:
47             -1-4:前4步,根过滤器的定义完全一样
48             -5 只是装饰器不一样
49             @register.simple_tag()
50                 def add_nb(value):
51                     return value+‘nb‘
52             -6 在模板里:(多个参数,以空格区分)
53                 -{% load mytag %}
54                 -{% add_nb ‘xqd‘%}
55

补充:inclusion_tag
-先注册app
-在app下创建一个templatetags的模块
-在模块下新建一个py文件
-from django.template import Library
-register=Library()------>名字必须叫register
-使用装饰器:@register.inclusion_tag(‘test.html‘)
-写个函数my_inclusion,返回字典
-模板里就能取到字典,渲染模板
-使用:
在模板中:{%load py文件名%}
{% my_inclusion 参数%}

原文地址:https://www.cnblogs.com/xuqidong/p/12099535.html

时间: 2024-10-29 04:35:11

自定义标签过滤器的相关文章

Django之自定义标签,过滤器,以及inclusion_tag

目录 Django之自定义标签,过滤器,以及inclusion_tag 自定义过滤器 自定义标签 inclusion_tag inclusion_tag() 项目实例: inclusion_tag() 案例(博客左侧标签栏) Django之自定义标签,过滤器,以及inclusion_tag 自定义过滤器 1,确定app是否在setting中注册 2 在app下创建一个templatetags的文件夹(模块)(名字不能变***) 3 在模块下创建一个py文件,名字随意:mytag.py 4 第一步

Django(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器

模板层:变量.过滤器.标签.自定义标签和过滤器 将页面的设计和Python的代码分离开会更干净简洁更容易维护. 我们可以使用 Django的 模板系统 (Template System)来实现这种模式 # django模板修改的视图函数 def current_time(req): from django.template import Template,Context now=datetime.datetime.now() t=Template('<html><body>现在时刻

权限(二)--权限的控制(过滤器与自定义标签)

一. 接着上一篇的说 权限(一)--用户.权限组以及权限的分配 权限的控制分为两块: 1.页面的控制(没用权限的不让他看到页面) 2.过滤控制(就算知道url,没有权限也不让进) 在项目中,都是由一个人来负责权限部分的编写,然后其他人的活中多少会涉及到一些权限相关的. 所以,权限控制的通用性是非常重要的(总不能每次写到就找写权限部分的那个人,问他怎么弄). 测试demo包: 权限控制Demo 二.过滤器 在访问url之前,进行一次过滤,同时查看当前用户是否有访问该url的权限. 为了保证通用性,

Django(自定义过滤器和自定义标签)

模版是一个用django模版语言标记过的python字符串.模版可以包含模版标签和变量. 模版标签是在一个模版里起作用的标记.比如,一个模版标签可以产生控制结构的内容(if或者for),可以获取数据库内容或者访问其它模版标签. 一个标签块被{%%}包围 变量标签被{{}}包围 context是一个传递给模版的key-value对. 模版渲染是通过从context获取值来替换模版中变量并执行所有的模版标签. 创建自定义标签目录 首先在app底下创建一个templatetags目录,添加一下两个.p

Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)

阅读目录(Content) 模板语法之变量 模板之过滤器 default length filesizeformat date slice truncatechars safe 模板之标签 自定义标签和过滤器 模板继承 (extend) 模板语法之include 前言:当我们想在页面上给客户端返回一个当前时间,一些初学者可能会很自然的想到用占位符,字符串拼接来达到我们想要的效果,但是这样做会有一个问题,HTML被直接硬编码在 Python代码之中. 1 2 3 4 def current_dat

django 第五课自定义模板过滤器与标签

代码布局:(自定义的代码放在哪里) 某个app特有的 app目录下,templatetags文件夹需要放 __init__.py 在到templetags文件夹下创建python模块(py文件) 定义复用 创建要给新的app,将他们定义在新的app中,在INSTALL_APPS 注册,然后可以应用 自定义模板过滤器 模板过滤器是什么? 函数,一个或两个参数 第一个参数是传递进来的模板变量 第二个参数,普通的参数,也可以是默认也可以不要其实就是个函数,没有什么不同在app目录teacher下创建t

django中自定义标签和过滤器

想要实现自定义标签和过滤器需要进行准备工作: 准备(必需)工作: 1  在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为polls的app下创建了一个templatetags的包,并在该包下创建了一个名为mytags的文件.那么目录结构看起来应该就像这样: polls/ __init__.py models.py templatetags/ __init__.py mytags.py views.py 2  settings文件中的INSTALLD_A

django自定义标签

参考文章: http://xiao80xiao.iteye.com/blog/519394 (django 自定义标签和过滤器) http://www.cnblogs.com/btchenguang/archive/2012/09/05/2672364.html#WizKMOutline_1346841868165594 (Django框架学习-Templates进阶用法--下) 自定义标签放在app/templatetags下.下面是3个例子. 自定义标签1(过滤器): vim test_ta

django 自定义模板过滤器

参考:http://www.cnblogs.com/qwj-sysu/p/4246605.html 做的页面,一个tr里有两个td, 1.3.5等奇数数据要放在第一个td, 2.4.6等偶数数据要放在第二个td, (如果已经没有数据,td 内容要为空), 所以要根据取余数的结果来判断; 但django的模板没有取余操作,只好自定义一个 django的模板配置在:setting.py TEMPLATES = [ { 'BACKEND': 'django.template.backends.djan