一、模板
- 组成
-网页代码(html/css/js)
-动态插入数据(逻辑处理,数据渲染,数据填充...)
- 作用
快速生成HTML
- 步骤
-加载
-渲染
二、模板使用
- 变量
-从视图函数中->模板->显示
{{变量}}
变量不存在,则插入空的字符串
- 标签
逻辑处理
使用:{% tag %}
- 标签if
{% if 条件 %}
代码区块
{% else %}
代码区块
{% endif %}
{% if 条件 %}
代码区块
{% elif 条件 %}
代码区块
{% endif %}
# 是否相等
{% ifequal class1 class2 %}
<p>同班</p>
{% else %}
<p>不同班</p>
{% endifequal %}
# 是否不相等
{% ifnotequal class1 class2 %}
<p>同班</p>
{% else %}
<p>不同班</p>
{% endifnotequal %}
- 标签for
{% for 变量 in 列表 %}
代码区域
{% endfor %}
# 循环的当前次数
{{ forloop.counter}}(从1开始)
{{ forloop.counter0}}(从0开始)
# 倒序
{{forloop.revcounter}}
{{forloop.revcounter0}}
- 单行注释
{# 注释内容 #}
模板中的注释,如果HTML注释 ''
- 多行注释
{% comment %}
注释区块
{% endcomment %}
- 过滤器
# 在变量显示之前修改它
{{var|过滤器}}
# 小写
{{ name |lower }}
# 大写
{{ name|upper }}
# 拼接
{{ name |join:"#" }}
# 默认值
{{ xixi | default:"<>" }}
- 标签include
# 加载模板(带参数渲染)
{% include '模板位置' 参数1 参数2 参数3 %}
# 不带参数
{% include "index_content.html" %}
# 带参数
{% include "index_footer.html" with user="zyz" namelist=names %}
三、反向解析
- 基本语法
{% url 'namaspace:name' p1 p2...... %}
name:url添加一个别名(不同应用中,可能会出现重名)
namespace:命名空间
四、模板继承
- 作用
提高页面的代码复用(抽取共有部分,作为基类)
- block标签
-挖坑和填坑
语法
# 挖坑
{% block 标签名 %}
{% endblock 标签名 %}
# 填坑
{% block 标签名 %}
{% endblock 标签名 %}
- extends标签
{% extends "base.html" %}
五、HTML转义
return render(request, "cart.html",context={"code": "<h1>购物车</h1>"})
# html:
-默认会转义:当成普通字符串
{{code}}
{{code|safe}}
-关闭自动转义
{% autoescase off %}
{{code}}
{% endautoescase %}