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程序设计有所帮助。
