本篇文章为大家展示了怎么在django框架中自定义模板标签,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
django提供了丰富的模板标签(模板标签)和过滤器(tempalte过滤器),但这些并非完全能满足自己的需要,所以django也提供了自定义模板标签和过滤器。自定义这些标签其实很简单,用一个方法举例,今天有一个需要在页面中计算几个数的乘积的需求,比如订单数量*订单价格*商品折扣。
也许有人会说,可以在视图中先计算好,然后再显示在界面上,当然,这样做是可以的。对于比较方便的,确实可以在视图中就计算好,如果不方便的,有的数据需要组合,拼凑的,也未必方便,所以试着写如下一个计算乘积的标记:
#编码:utf - 8 & # 39;& # 39;& # 39; Created 提醒;2012-12-19 @author: yihaomen.com 计算多个数的乘积 & # 39;& # 39;& # 39; 得到django import 模板 得到django.template.base import  resolve_variable,节点,TemplateSyntaxError 时间=register template.Library () class MulTag(节点): def 才能__init__(自我,numList): ,,,self.numList =numList def 才能使(自我,,背景): ,,,realList =, [] ,,,试一试: ,,,,,for numobj 拷贝self.numList: ,,,,,,,realList.append (numobj.resolve(上下文) ,,,除了: ,,,,,raise TemplateSyntaxError (“multag error") ,,,试一试: ,,,,,value =, realList [0] ,,,,,for num 拷贝realList [1:]: ,,,,,,,value =*, num值 ,,,,,return 轮(价值,2) ,,,除了: ,,,,,return & # 39; & # 39; @register.tag (name=癿ymul") def getMulNums(解析器,,令牌): 时间=bits 才能;token.contents.split () realList 才能=,[parser.compile_filter (x), for x 拷贝位[1:]] return 才能MulTag (realList)
基本上所有的django模板标签都是这种写法,这里需要注意的是
1。在getMulNums方法里的<代码> parser.compile_filter 代码>这个非常重要。
2。在Multag中的<代码> numobj.resolve(上下文)代码>
有了以上的方法,才能正确得到模板中上下文的内容,否则你只能写死内容(<代码> {% mymul 3 4 5 6%} 代码>这种方式)
比如,在视图视图的背景中有秩序,项,对象在模板中有如下计算
{%, load myMulTag %} {% mymul order.num item.price  item.discount %}
这样就能计算出值来,无论多少个相乘,都可以得到结果。
另外还有一点要注意的就是自己写的模板标签,一定要保存在应用下的templatetags目录下。否则加载不成功。
这个写django模板标签的方式,具有代表性,其他的标签可以用类似的方法写出来,写成自己需要的业务规则就可以,接收的参数类型不同而已。
上述内容就是怎么在django框架中自定义模板标签,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。