一、模版的使用
配置
如果是命令行创建的项目需要手动配置模版文件目录(如果是Pycharm创建的项目则无需配置)
在项目根目录下创建目录templates, 用来存放模版文件
在项目的配置文件夹settings.py里配置:
# 指定模版文件保存到那个目录下
TEMPLATES=[ 'DIRS':[os.path.join(BASE_DIR, 'templates')],]
定义
在templates目录中存放模板文件,如index.html
渲染
方式一: 通过render函数
return render(request, 'index.html', context)
- 参数1:请求对象
- 参数2:模块路径
- 参数3:字典数据
方式二: 通过Template对象的render方法
return HttpResponse( loader.get_template('index.html') .render(context))
二、模版语法
1、模板变量
变量规则: 变量名必须由字母、数字、下划线(不能以下划线开头)和点组成
语法:{{变量}}
数据类型:python内建类型或者对象
模板变量从哪里存送进来:
//在模板渲染的时候,通过字典的形式传入
(return render(request, 'index.html', 字典))
//模板变量名就是这个字典里的键名
2、模板语句
for循环
{% if ... %}
逻辑1
{% elif ... %}
逻辑2
{% else %}
逻辑3
{% endif %}
if条件
{% if ... %}
逻辑1
{% elif ... %}
逻辑2
{% else %}
逻辑3
{% endif %}
比较运算符
== != < > <= >=
注意:运算符左右两侧必须有空格。
布尔运算符
and
or
not
注意:运算符左右两侧必须有空格。
3、过滤器
语法:变量|过滤器:参数
safe
length:返回字符/元素个数
default:data|default:'默认值'
date: value|date:"Y年m月j日 H时i分s秒"; 格式符:Y表示年,m表示月,d表示日01,j表示日1,H表示时24,h表示时12,i表示分,s表示秒
4、注释
单行
{#...#}
多行
{% comment %}
...
{% endcomment %}
5、模板继承
父模板
如果发现在多个模板中某些内容相同,那就可以使用block标签把这段内容定义到父模板中。
{% block 块名称 %}
预留区域,可以编写默认内容,也可以没有默认内容
{% endblock %}
子模版:
- 继承声明:
{% extends "父模板路径" %}
- 对有需要的block进行重写:
{% block 名称 %} 子模板的内容 {{ block.super }} 显示父模板中block的内容 {% endblock %}
不用重写父模版中的所有block,如果子模版没有重写,则使用父模版定义的默认值。
可以使用 block.super 来包含父模板的块中定义的内容