Django模板系统(templates)
模板语言
常用语法
两种特殊符号{ {} }、{%%},变量相关用{ {} },逻辑相关用{%%}
变量
{变量名}
变量名由字母数字和下划线组成
点(.)在模板语言中有特殊含义,用来获取对象的相应属性值
模板中支持的写法:
{#取1中的第一个参数#} {{1.0}}
{#取字典中key的值#} {{d.name}}
{#取对象的name属性#} {{person_list.0.name}}
{#操作只能调用不带参数的方法#} {{person_list.0.dream}}
内置Filters
法:{{value|filter_name:参数}}
default
{{value:default:‘nothing’}} 如果value值没传的话就显示nothing
length
{{value|length}} 返回value的长度,如value=[a,b,c,d]的话,就显示4。(‘|’左右两边没有空格)
filesizeformat
将值格式化“一个人类可读”的文件尺寸(例如,13kb,4.1M,202bytes等)
{{123456789|filesizeformat}} 输出117.7MB
slice 切片
{{value|slice:“2:-1”}}
date 格式化
{{value|date:“Y-m-d H:i:s”}}
safe
Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因是为了安全。但有时候我们不希望有一些HTML标签被转义,比如做一个内容管理系统,后台添加的文章中是经过装饰的
这些装饰可能是通过一个类似于FCKedirtor编辑加注了HTML装饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果
是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。
truncatechars
如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号系列(“...”)结尾
参数:截断的字符串
{{value|truncatechars:9}}
自定义Filter
自定义过滤器只是带有一个或两个参数的Python函数:
变量(输入)的值——不一定是一个字符串
参数的值-这可以有一个默认值,或者完全省略
for循环
<ul>
{ %for user in user-list% }
<li>{{user.name}}</li>
{ %endfor% }
</ul>
for循环可用的一些参数
if,elif,else
if语句支持and、or、==、>、<、!=、<=、>=、in、not in、is、is not判断
with
定义一个中间变量
csrf_token
这个标签用于跨站请求伪造保护
在页面的form表单里面写上{%csrf_token%}
注释
母版 我们通常会在母版中定义页面专用的JS块、CSS块,方便子页面替换
继承母版 在子页面中在页面最上方使用下面的语法来继承母版
{%extends ‘layouts.html%’}
块(block)
通过在母版中使用{%block XXX%}来定义“块”
在子页面中通过定义母版中的block名来对应替换母版中相应的内容
组件
可以将常用的页面内容如导航条,页面信息等组件保存在单独的文件中,然后在需要使用的地方按如下语法导入即可
{%include‘navbar.html’%}
静态文件相关
{%load static%}
<img src="{%static "mytest.js"%}"alt="Hi!"/>
引用JS文件时使用:
{%load static%}
<script src="{%static "mytest.js"%}"></script>
某个文件多处被用到可以存为一个变量
{%load static%}
{%static “images/hi.jpg” as myphoto%}
<img src="{{myphoto}}"></img>
使用get_static_prefix
{%load static%}
<img src="{%get_static_prefix%}images/hi.jpg"alt="hi!"/>
inclution_tag多用于返回html代码片段