模板调用
1.在项目中的templatles文件夹中创建html文件,例如(index.html文件)
2.在视图views.py中调用:
`def index_hander(request):
return render(request,'index.html',context)`
模板参数传递
1.在视图文件中定义参数:
def t1_hander(request):
context={
'key1':'value1',
'key2':['value2','value22'],
'key3':{
'key3_1':'value3_1',
'key3_2':'value3_2'
}
}
return render(request,'t1.html',context)
2.在模板文件中接收定义的参数:
{# 1.普通值获取 #}
{{ key1 }}
<br/>
{# 2.列表值获取 #}
{{ key2.0 }} {{ key2.1 }}
<br/>
{# 3.字典值获取 #}
{{ key3.key3_1 }} {{ key3.key3_2 }}
就可以在html文件中得到相应的参数值,
模板循环语句
def t2_hander(request):
context={
'hobbys':['A','B','C']
}
return render(request,'t2.html',context)
在模板中定义参数接收
<body>
{# 循环语句 #}
{% for hobby in hobbys %}
获取到的值是:{{ hobby }}
<br/>
{% endfor %}
</body>
模板判断语句
在视图函数中定义:
def t3_hander(request):
context={
'message':'这是一个提示信息,根据style来决定颜色',
'sytle':3,
}
return render(request,'t3.html',context)
在模板中定义接收:
<body>
{% if sytle == 0 %}
<span style="color: red">{{ message }}</span>
{% elif sytle == 1 %}
<span style="color: green">{{ message }}</span>
{% elif sytle == 2 %}
<span style="color: blue">{{ message }}</span>
{% else %}
<span style="color: black">{{ message }}</span>
{% endif %}
</body>
获取视图函数的地址
不需要额外传参的视图函数:
{% url “【namespace】:【name】” %}
需要传参的视图函数:
例如:def re_handler(request,num):
… …
{% url “【namespace】:【name】” 【传递的参数】%}
模板过滤器
过滤器:
模板中对传递过来的数据进行修饰,在显示。
过滤器的语法:
关键字 | 说明 |
---|---|
safe | 禁止HTML转义 |
length | 长度 |
datetime | 日期 (Y-m-d H:i:s) |
default | 默认值(变量名 |
upper | 转大写 |
lower | 转小写 |
说明:
多个过滤器配合:
{{ 变量|过滤器1|过滤器2 }}
代码:
模板文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>过滤器</title>
</head>
<body>
原样输出:
<ul>
<li>html_code:{{ html_code }}</li>
<li>datetime:{{ datetime }}</li>
</ul>
过滤器输出:(格式:变量|过滤器:参数)
<ul>
<li>safe禁止转义:{{ html_code | safe }}</li>
<li>length:{{ html_code | length }}</li>
<li>date输出日期:{{ datetime | date:'Y-m-d H:i:s' }}</li>
<li>default默认值:{{ sytle |default:'默认值' }}</li>
<li>upper转大写:{{ html_code |upper }}</li>
<li>lower转小写:{{ html_code |lower }}</li>
<li>多个过滤器:{{ html_code | lower | safe }}</li>
</ul>
</body>
</html>
视图view代码:
import datetime
def t5_hander(request):
context={
'html_code':'<a href="https://www.baidu.com">百度一下</a>',
'datetime':datetime.datetime.now()
}
return render(request,'t5.html',context)
模板复用与block提取
- 模板继承
{% extends “【父模板路径】” %} - block块定义与重写
{% block 【代码块名称】 %}
… …
{% endblock %}
注:调用父模板中的代码:{{ block.supper }}