1.模板标签系统
在做web开发,要给用户提供一个页面,页面包括静态页面+数据,两者结合起来就是完整的可视化的页面,django的模板系统支持这种功能,首先需要写一个静态页面(结构html,样式css,行为js)然后通过python的模板语法将数据渲染上去。
1.1.设置
a.在主目录下创建一个templates目录
b.修改setting.py文件,内容如下:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],#添加这一行
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
1.2.调用模板方法
def WeiXinRes(request, infoStr):
info={};
return render(request,"WeiXinLoginResponse.html",info);
2.模板标签语法
2.1.变量的使用
使用locals()
方法,作用是将当前视图函数的所有局部变量返回。
#返回数据
def WeiXinRes(request, promptInfoStr, jsonData):
info={"promptInfoStr":promptInfoStr,"jsonData":jsonData};
return render(request,"WeiXinLoginResponse.html",locals());
变量的形式如下:{{ variable }}
2.2.控制语句
if else elif
模板中使用控制语句,语法结构
{% if 条件 %}
{% elif 条件 %}
{% else %}
{% endif %}
范例:
{% if athlete_list %}
Number of athletes: {{ athlete_list|length }}
{% elif athlete_in_locker_room_list %}
Athletes should be out of the locker room soon!
{% else %}
No athletes.
{% endif %}
2.3.循环语句
范例:
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% endfor %}
</ul>
3.自动转义
默认开启自动转义。
3.1.自动转义内容
< 被替换为 <
> 被替换为 >
' (单引号)被替换为 '
" (双引号)被替换为 "
& 被替换为 &
3.2.禁止自动转义
{% autoescape off %}
Hello {{ name }}
{% endautoescape %}