Django模板
模板中变量使用了双括号,需要向Django说明模板文件的途径。
Django模板标签
变量 模板语法:
view {"HTML 变量名":"views 变量名"}
HTML:{{变量名}}
列表
在Django中,可以使用.索引下标取出对应的元素
字典
可以用.键取出对应值
过滤器 模板语法
{{变量名| 过滤器:可选参数}}
模板过滤器可以在变量被显示前修改它,过滤器使用管道字符,如下显示:
{{name|lower}}
变量被过滤器lower处理后,文档大写转换为小写。
过滤管道可以被”套接“,既是说,一个过滤器管道的输出可以作为另一个过滤器管道的输入。
有些过滤器有参数,过滤器的参数是跟随冒号之后并且总是以双引号包含。
{{bio|truncatewords:"30"}}
其他过滤器:
addslashes:添加反斜杠、单引号或者双引号前面。
date:按指定的格式字符串参数格式化date或者datetimej对象。
length:返回变量的长度。
default
default为变量提供一个默认值;
如果views传的变量的布尔值为false,则使用指定的默认值。
length
返回对象的长度,一般适用于字符串和列表。
字典返回的是键值对的数量,集合返回的是去重后的长度。
filesizeformat
以更易读的方式显示文件的大小。
字典返回的是键值对的数量,结合返回的 是去重后的长度
date
根据给定格式对一个日期变量进行格式化
格式:Y-m-d H:i:s 返回年-月-日 小时-分钟-秒的格式时间
truncatechars
如果字符串包含的字符总个数多于指定的字符数量,那么会被截断掉后面的部分。
截断的字符串会以...结尾
safe
将文件标记为安全,不需要转义。
要保证views.py传过来的数据绝对安全,才能用safe。
和后端的views.py的mark_safe效果相同。
Django会对views.py传到HTML文件中 的标签语法进行转义,令其语法失效。加safe会过滤器是告诉Django该数据是安全的,不需要转义,可以让该数据语义生效。
if/else标签
基本语法格式如下:
{% if condition %}
... display
{% endif %}
根据条件判断是否输出,if/else支持嵌套
{%if%}标签接受and,or或not关键字来对多个变量进行判断。或者对变量取得反(not)。
for标签
{%for%}允许我们在一个序列上迭代。
与python中的for语法相似,循环语法是for X in Y, Y是要迭代的序列而X 是在每一个特定的循环中使用的变量名称。每一次循环中,模板系统会渲染{%for%}和{%endfor%}之间的全部内容。
遍历字典:可以直接用字典.items方法,用变量的解包分别获取键和值。
循环标签里可以用{{forloop}}变量来获取循环序号。
{%empty%}
可选的{%empty%}从句:在循环为空的时候执行(即in后面的参数布尔值为false)
ifequal/inotequal标签
{%ifequal%}标签比较这两个值,当他们相等时,显示在{%ifequal%}和{%endifequal%}中间的所有值。
注释标签
{#这是一个注释#}
include标签
{%include%}标签允许在模板中包含其他的模板的内容。
csrf_token
csrf_token用于form表单中,租用是跨站请求伪造保护。
如果不用这个标签,在使用form表单时,要再次跳转页面就会报403权限错误。
用了{%csrf_token%}标签,在form表单提交数据的时候,才会成功。
解析:首先,向服务器发送请求,获取登录页面,此时中间件csrf会自动生成一个隐藏的input标签,该标签里的value值是一个随机的字符串,用户获取到登录页面的同时也获取到了这个隐藏的input的标签。
自定义标签和过滤器
1、在应用目录下创建templatetags目录。
2、在templatetags目录下创建任意py文件,如my_tags.py。
3、my_tags.py代码如下:
from django import template
register = template.Library() # register的名字是固定的,不可改变
4、利用装饰器@register.filter自定义过滤器。
转义:装饰器的参数最多只能有2个。
5、利用装饰器@register.simple_tag自定义标签
6、在使用自定义标签和过滤器前,要在html文件body的最上方中导入该文件。
7、在html中定义过滤器。
8、在html中使用自定义标签。
9、语义化标签。
配置静态文件
1、在根目录下创建statics目录。
2、在settings文件的最下方配置添加以下配置。
3、在statics目录下创建css目、js目录、images目录、plugins目录,分别存放css文件、js文件、图片、插件。
4、把bootstrap框架放入插件目录plugins。
5、在HTML文件的head标签中引入bootstrap。
模板继承
模板可以用继承的方式来实现复用,减少冗余内容。
网页的头部和尾部内容一般都是一致的,我们就可以通过模板继承来实现复用。
父模板用于放置可重复利用内容,子模板继承父模板的内容,并放置自己的内容。
父模板
标签block...endblock:父模板中的预留区域,该区域留给子模版补充差异性的内容,不同预留区域的名字不能相同。
子模板
子模板使用extends继承父模板。
子模版如果没有设置父模板中的预留内容,则使用在父模板中的设置的默认内容,当然也可以都不设置,就为空。



