Django模板引擎
Django模板引擎包含模板上下文(模板变量)、标签和过滤器:
- 模板上下文是以变量的形式写入模板文件里面,变量值由视图函数或视图类传递所得
- 标签是对模板上下文进行控制输出,比如模板上下文的判断和循环控制等
- 模板继承隶属于标签
- 过滤器是对模板上下文进行操作处理,比如内容截取、替换或者格式转换
模板上下文
上下文的数据由视图函数或者视图类传递,以{ {variable}}表示,variable是上下文的名称,支持pyhon所有的数据类型。
自定义标签
标签是对模板上下文进行控制输出,以{% tag %}表示,其中tag是标签的名称,Django内置了许多模板标签:
标签 | 描述 |
---|---|
{% for %} | 遍历输出上下文的内容 |
{% if %} | 对上下文进行条件判断 |
{% csrf_token %} | 用于防护攻击 |
{% url %} | 引用路由配置的地址,生成相应的路由地址 |
{% with %} | 将上下文重命名 |
{% load %} | 加载导入Django的标签库 |
{% static %} | 读取静态资源的文件内容 |
{% extend XXX%} | 模板继承,XXX为模板文件名,使当前模板继承xxx模板 |
{% block XXX%} | 重写父类模板的代码 |
代码示例:
# for标签的使用,支持嵌套,mylist可以为列表、元组或某个对象
# item可以自定义名称,代表当前循环的元素对象
{
% for item in mylist %}
{
{
item }}
{
% endfor %}}
#if标签,支持嵌套,判断条件符合与上下文之间使用空格隔开
{
% if name == "Lily" %}
{
{
name }}
{
% elif name == "Lucy" %}
{
{
name }}
{
% else %}
{
{
name }}
{
% endif %}
#url标签
#生成不带变量的URL
<a href="{% url 'index' %}">首页</a>
#生成带变量的URL
<a href="{% url 'page' 1 %}">第一页</a>
#with标签,total=number无须空格隔开,否则报错
{