摘要
本文部分内容来源于网络,个人收集整理,请勿传播
Django框架中Template知识点
- Template
组成:HTML代码+逻辑控制代码
模版的执行
模版的创建过程,对于模版,其实就是读取模版(其中嵌套着模版标签)文件,然后将 Model 中获取的数据插入到模版中,最后将信息返回给用户。
变量
深度变量的查找:万能的句点号
1 | {{ item }} |
变量的过滤器
1 | {{obj|filter:param}} |
标签
for循环
1 | {% for item in item_list %} |
forloop方法
1 | ## forloop.counter 表示循环的次数,它从1开始计数 |
forloop
变量只能在循环中得到,当模板解析器到达endfor
时forloop
就消失了- 如果你的模板context已经包含一个叫forloop的变量,Django会用
for
标签中覆盖你定义的forloop
变量的值 - 在其他非循环的地方,你的
forloop
变量仍然可用
if语句
1 | {% if ordered_warranty %} |
包含 include
- 该标签允许在(模板中)包含其它的模板的内容。
- 标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串
- 每当在多个模板中出现相同的代码时,就应该考虑是否要使用
include
来减少重复
1 | {% include "tag.html" %} |
模板的继承
- extends必须是子板的第一个模板标记
- 一般来说,基础模板中的block标签越多越好
- 子模板不必定义父模板中所有的代码块
- 可以用合理的缺省值对一些代码块进行填充
- 如果发觉自己在多个模板之间拷贝代码,你应该考虑将该代码段放置到父模板的某个block中
- 不允许在同一个模板中定义多个同名的block
1 | # 母板: |
其他
1 | # 跨站请求伪造保护 |
自定义simple_tag标签和过滤
- 在app中创建templatetags模块,名字不能改
- 创建任意py文件
- 创建
register = template.Library()
对象,名字不能改 - 自定义标签无参数个数限制,不能进行逻辑判断
- 自定义过滤器函数的参数只能两个,不能加空格,可以进行逻辑判断
- 使用
- 注册app
- load py文件
1 | # xx.py |
在模板中使用
1 | # 在使用自定义simple_tag的html文件中导入之前创建的 xx.py 文件名 |