内容来源于【2020 最新python教程】第五部分:Django框架课程教学笔记和maple-shaw博客笔记
Django标签
for 标签
{% for name in name_list %}
<li>{{forloop.counter}}-{{ name }}</li>
{% endfor %}
运行结果:
1-rongmei
2-meizi
for…empty
{% for foo in kong %}<!--变量kong是在view中返回的空的列表-->
{{ foo }}<!--#有元素显示元素的值-->
{% empty %}<!--#列表为空则返回提示信息-->
元素为空
{% endfor %}
if标签
{% if rongmei.age < 24 %}
年龄小于24
{% elif rongmei.age > 24 %}
年龄大于24
{% else %}
年龄等于24
{% endif %}
- if标签中不支持算数运算,即无{% if 1+1>0 %}……{% endif %}的写法。要做加减运算可用add过滤器,乘除运算等可自定义过滤器
{% {1|add:1} >0 %}
结果正确
{% endif %}
- if 标签中不支持连续判断
python中的连续判断结果如下
js中的连续判断结果如下
模板语法中连续判断逻辑与js中的连续判断一致,与python中的逻辑不一样
with标签
作用相当于定义一个中间变量
{% with p_list.0.name as rongmei_name %}<!--with…as相当于给一个变量取一个别名-->
<p>{{ rongmei_name }}</p>
<p>{{ rongmei_name }}</p>
<p>{{ rongmei_name }}</p>
{% endwith %}
<br>
{% with p_list.0.age as rongmei_age %}
<p>{{ rongmei_age }}</p>
<p>{{ rongmei_age}}</p>
<p>{{ rongmei_age }}</p>
{% endwith %}
运行结果:
csrf_token
这个标签用于跨站请求伪造保护,在页面的form表单里面写上{% csrf_token %}
由浏览器发送一个请求给服务器A,由服务器A返回一个form表单,当点击提交的时候,提交的地址由form表单中的action决定,如果action不写,则还是返回给服务器A,如果action中写的是服务器B的地址,则将数据提交到服务器B
<form action="" method="post">
<input type="text" name="k1">
<button>提交</button>
</form>
通过上述代码直接点提交就会浏览器会提示”CSRF验证失败,请求中止“。
在form标签中加入{% csrf_token %}标签即可正常提交,提交时则会产生name和value的键值对以供服务器进行校验