模板相关配置:
settings.py配置相关:
templates相关配置:
配置选项:
BACKEND----------模板引擎配置
django.template.backends.django.DjangoTemplates
django.template.backends.jinja2.Jinja2
DIRS------------模板引擎按列表顺序搜索这些目录以查找模板源文件 上面图片那样写法可以解决一些夸平台问题
APP_DIRS-------决定模板引擎是否应该进入每个已安装的应用中查找模板需要再INSTALLED_APPS里面做添加模块文件夹路径
OPTIONS-------其他选项配置
使用python中的变量:
DTL跟jinja2之间的区别:
类成员的用法:
常用模板标签:
循环控制
{% for item in data_list %}
<li> 内容</li>
{% empty %}
<li>暂无内容 </li>
{% endfor %}
循环内的变量forloop
变量 描述
forloop.first 如果是第一次迭代,为 True
forloop.last 如果是最后一次迭代,为 True
forloop.counter0 计数器,从0开始
forloop.counter 计数器,从1开始
for 循环 dict(字典)
{% for key, value in data.items %}
{{ key }}: {{ value }}
{% endfor %}
重复循环( 循环中再循环)
{% cycle 'row1' 'row2' %}
与Jinja2的区别
循环变量forloop, Jinja2 中为 loop
List为空:{% empty %}, Jinja2中为 {% else %}
循环中的再循环
DTL: {% cycle 'odd' 'even’ %}
Jinja2: {{ loop.cycle('odd', 'even') }}
DTL 不支持continue和 break
条件控制
语法参考
{% if condition_a %}
满足了 条件 A
{% elif condition_b %}
满足了 条件 B
{% else %}
都不满足
{% endif %}
ifequal ifnotequal /
{% ifequal a b %}
...
{% endifequal %}
循环内ifchanged
其他逻辑控制
• and, or
• == , !=
• > , <
• >= , <=
• in, not in
• is
模板注释
添加注释
{# 注释内容 #}
{% comment " 简单的描述" %}
<p>HTML create_date 内容}}</p> {{
{% endcomment %}
与HTML注释的区别
<!-- -- 注释内容 >
URL解析
URL标签的使用
{% url 'url_name' params %}
static URL 静态文件 解析
{% load static %}
<img src="{% static "images/cat.jpg" %}" alt="Cat">
与Jinja2的区别
DTL
{% 'url_name' params %}
Jinja2
{{ url_for('index') }}
with语句块
语法参考
{% with alpha=1 beta=2 %}
...
{% endwith %}
当前时间显示
当前时间显示
{% now " F Y H:i" %}
DTL Jinja2 与 的使用区别
区别一:循环中的区别
区别二:URL解析的区别