Django框架模板用法入门教程
本文实例讲述了Django框架模板用法。分享给大家供大家参考,具体如下:
if/else标签
基本语法格式如下:
{%ifcondition%} ...display {%endif%}
或者:
{%ifcondition1%} ...display1 {%elifcondition2%} ...display2 {%else%} ...display3 {%endif%}
根据条件判断是否输出。if/else支持嵌套。
{%if%}标签接受and,or或者not关键字来对多个变量做判断,或者对变量取反(not),例如:
{%ifathlete_listandcoach_list%} athletes和coaches变量都是可用的。 {%endif%}
for标签
{%for%}允许我们在一个序列上迭代。
与Python的for语句的情形类似,循环语法是forXinY,Y是要迭代的序列而X是在每一个特定的循环中使用的变量名称。
每一次循环中,模板系统会渲染在{%for%}和{%endfor%}之间的所有内容。
例如,给定一个运动员列表athlete_list变量,我们可以使用下面的代码来显示这个列表:
-
{%forathleteinathlete_list%}
- {{athlete.name}} {%endfor%}
给标签增加一个reversed使得该列表被反向迭代:
{%forathleteinathlete_listreversed%} ... {%endfor%}
可以嵌套使用{%for%}标签:
{%forathleteinathlete_list%}{{athlete.name}}
-
{%forsportinathlete.sports_played%}
- {{sport}} {%endfor%}
ifequal/ifnotequal标签
{%ifequal%}标签比较两个值,当他们相等时,显示在{%ifequal%}和{%endifequal%}之中所有的值。
下面的例子比较两个模板变量user和currentuser:
{%ifequalusercurrentuser%}Welcome!
{%endifequal%}
和{%if%}类似,{%ifequal%}支持可选的{%else%}标签:8
{%ifequalsection'sitenews'%}SiteNews
{%else%}NoNewsHere
{%endifequal%}
注释标签
Django注释使用{##}。
{#这是一个注释#}
过滤器
模板过滤器可以在变量被显示前修改它,过滤器使用管道字符,如下所示:
{{name|lower}}
{{name}}变量被过滤器lower处理后,文档大写转换文本为小写。
过滤管道可以被*套接*,既是说,一个过滤器管道的输出又可以作为下一个管道的输入:
{{my_list|first|upper}}
以上实例将第一个元素并将其转化为大写。
有些过滤器有参数。过滤器的参数跟随冒号之后并且总是以双引号包含。例如:
{{bio|truncatewords:"30"}}
这个将显示变量bio的前30个词。
其他过滤器:
- addslashes:添加反斜杠到任何反斜杠、单引号或者双引号前面。
- date:按指定的格式字符串参数格式化date或者datetime对象,实例:
{{pub_date|date:"Fj,Y"}}
- length:返回变量的长度。
include标签
{%include%}标签允许在模板中包含其它的模板的内容。
下面这个例子都包含了nav.html模板:
{%include"nav.html"%}
模板可以用继承的方式来实现复用。
接下来我们先创建之前项目的templates目录中添加base.html文件,代码如下:
菜鸟教程(runoob.com) HelloWorld!
菜鸟教程Django测试。
{%blockmainbody%}original
{%endblock%}
以上代码中,名为mainbody的block标签是可以被继承者们替换掉的部分。
所有的{%block%}标签告诉模板引擎,子模板可以重载这些部分。
hello.html中继承base.html,并替换特定block,hello.html修改后的代码如下:
{%extends"base.html"%} {%blockmainbody%}继承了base.html文件
{%endblock%}
第一行代码说明hello.html继承了base.html文件。可以看到,这里相同名字的block标签用以替换base.html的相应block。
希望本文所述对大家基于Django框架的Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。