django框架模板中定义变量(set variable in django template)的方法分析
本文实例讲述了django框架模板中定义变量的方法。分享给大家供大家参考,具体如下:
总有一些情况,你会想在djangotemplate中设置临时变量,但是django对在模板中对临时变量的赋值没有很好的开箱即用的tag或者filter。但是还是能通过一些其他方法实现的。
1.利用django自带的with标签实现
2.利用自定义tag 实现,应该灵活很多.
利用django自带的with标签实现对变量赋值
好像在django1.3之后才支持这种做法
从context中得到值进行赋值
{%withtotal=business.employees.count%} {{total}}employee{{total|pluralize}} {%endwith%}
当然也可以直接给一个常量
{%withage=100%} {{age|add:"2"}} .... {%with%}
2自定义标签方式现实在djangotemplate中给变量赋值
fromdjangoimporttemplate register=template.Library() classSetVarNode(template.Node): def__init__(self,var_name,var_value): self.var_name=var_name self.var_value=var_value defrender(self,context): try: value=template.Variable(self.var_value).resolve(context) excepttemplate.VariableDoesNotExist: value="" context[self.var_name]=value returnu"" defset_var(parser,token): """ {%set= %} """ parts=token.split_contents() iflen(parts)<4: raisetemplate.TemplateSyntaxError("'set'tagmustbeoftheform:{%set = %}") returnSetVarNode(parts[1],parts[3]) register.tag('set',set_var)
在template中应用时,现在模板中load这个标签所在文件。然后用类似如下方式处理
{%loadset_var%} {%seta=3%} {%setb=some_context_variable%} {%setc="somestring"%}
这样就实现了在django模板中对变量进行赋值和处理.
希望本文所述对大家基于Django框架的Python程序设计有所帮助。