ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] django模板是一个string文本,用来从python代码中分离一个文档和展现数据。 模板通常用来输出HTML,由HTML代码和模板标签组成。 ## 模板标签 模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签。 ### 变量 {{ var_name }} 双大括号括起来的为变量,用于把数据插入HTML代码中。 ### 标签 {% load staticfiles %} 大括号和%括起来的为标签(tag),通常用来实现简单的逻辑。 #### 常用的标签 ##### if标签 {% if %} if语句,可以用not,and,or来控制逻辑,但是不允许not,or同时出现,支持{% elif %}、{% else %}用法,符合条件显示块中内容。需要{% endif %}结束标签 示例: ```html {% if num > 100 or num < 0 %} <p>无效</p> {% elif num > 80 and num < 100 %} <p>优秀</p> {% else %} <p>辣鸡</p> {% endif %} ``` ##### ifequal和ifnotequal 比较是否相等,符合条件显示块中内容,只限于简单的类型,比如字符串、整数、小数的比较,列表、字典、元组不支持。需要结束标签{% endifequal %}。 示例: ```html {% ifequal num1 num2 %} <h1>嘻嘻</h1> {% endifequal %} ``` ##### for标签 {% for %} 用来循环一个list,还可以使用reserved关键字来进行倒序遍历,一般可以用if语句来西先判断一下列表是否为空,在进行遍历。需要结束标签{% endfor %} ``` <ul> {% for i in list1 %} <li>{{ i }}</li> {% endfor %} </ul> ``` {{ foroop.counter }} 指示for标签循环了多少次 ##### 注释 {# 注释 #} ##### url {% url %} 引入地址 ``` {% url a:b c %} ``` 以a开头,b结尾的url,第三个参数会插在中间 渲染结果: ``` a/c/b ``` ... #### 过滤器 可以使用过滤器对值进行处理。 1. add 给变量加上相应的值 ``` {{ value|add:"2" }} ``` 2. addslashes 给变量中的引号(双引号、单引号)前加上斜线 3. capfirst 首字母大写 4. cut 从字符串中移除指定的字符 {{ value|cut:" " }} 5. date 格式化日期字符串 6. lower 内容转为小写 ``` {{ "ABCD"|lower }} ``` 7. join 以指定符号连接列表中的值 ``` {{ list|join:"," }} ``` 8. safe 解除转义 ... ## 模板标签 模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签。 ### 变量 {{ var_name }} 双大括号括起来的为变量,用于把数据插入HTML代码中。 ### 标签 {% load staticfiles %} 大括号和%括起来的为标签(tag),通常用来实现简单的逻辑。 #### 常用的标签 ##### if标签 {% if %} if语句,可以用not,and,or来控制逻辑,但是不允许not,or同时出现,支持{% elif %}、{% else %}用法,符合条件显示块中内容。需要{% endif %}结束标签 示例: ```html {% if num > 100 or num < 0 %} <p>无效</p> {% elif num > 80 and num < 100 %} <p>优秀</p> {% else %} <p>辣鸡</p> {% endif %} ``` ##### ifequal和ifnotequal 比较是否相等,符合条件显示块中内容,只限于简单的类型,比如字符串、整数、小数的比较,列表、字典、元组不支持。需要结束标签{% endifequal %}。 示例: ```html {% ifequal num1 num2 %} <h1>嘻嘻</h1> {% endifequal %} ``` ##### for标签 {% for %} 用来循环一个list,还可以使用reserved关键字来进行倒序遍历,一般可以用if语句来西先判断一下列表是否为空,在进行遍历。需要结束标签{% endfor %} ``` <ul> {% for i in list1 %} <li>{{ i }}</li> {% endfor %} </ul> ``` {{ foroop.counter }} 指示for标签循环了多少次 ##### 注释 {# 注释 #} ##### url {% url %} 引入地址 ``` {% url a:b c %} ``` 以a开头,b结尾的url,第三个参数会插在中间 渲染结果: ``` a/c/b ``` ... #### 过滤器 可以使用过滤器对值进行处理。 1. add 给变量加上相应的值 ``` {{ value|add:"2" }} ``` 2. addslashes 给变量中的引号(双引号、单引号)前加上斜线 3. capfirst 首字母大写 4. cut 从字符串中移除指定的字符 {{ value|cut:" " }} 5. date 格式化日期字符串 6. lower 内容转为小写 ``` {{ "ABCD"|lower }} ``` 7. join 以指定符号连接列表中的值 ``` {{ list|join:"," }} ``` 8. safe 解除转义 ... ## 模板继承 当你写好了一个骨架模板之后,可以用模板继承,在子模版中使用父模板的代码,并修改父模板的部分内容。 父模板一般命名为base.html,它定义了一些简单的网页框架,然后在子模版中填上其他内容。 base.html ``` <html> <body> <h4>图书系统</h4> {% block main %} <a href="#">图书列表</a> {% endblock main %} </body> </html> ``` 显示效果如下: ![](https://box.kancloud.cn/fb074da345c3e3c2e8a9ece3a7023250_410x179.png) 继承: {% extends 'base.html' %} 在子模版中使用extends继承父模板 books.html ``` {% extends 'polls/books.html' %} {% block main %} <ul> <li>西游记</li> </ul> {% endblock main %} ``` 显示效果如下: ![](https://box.kancloud.cn/ce558e415e64364ad0f73af1a310fa44_538x234.png) `block` 标签中的内容已经被替换掉了,如果不写自定义内容的话,将继续使用父模板的内容。 可以用super获取父模板block的内容: ``` {% extends 'polls/books.html' %} {% block main %} <ul> {{ block.super }} <li>西游记</li> </ul> {% endblock main %} ``` ![](https://box.kancloud.cn/263e934d08581e2bc0f7fc721304e9d5_431x159.png) django模板是一个string文本,用来从python代码中分离一个文档和展现数据。 模板通常用来输出HTML,由HTML代码和模板标签组成。