在HTML文件的表单中添加{%csrf_token%}便可以解决问题

原因是django为了在用户提交表单时防止跨站攻击所做的保护

只需在HTML文件的表单中添加{%csrf_token%}便可以解决问题

------------------------if判断{% if %}标签计算一个变量值,如果是“true”,即它存在、不为空并且不是false的boolean值,系统则会显示{% if %}和{% endif %}间的所有内容

{% if num >= 100 %} {% if num > 200 %} <p>num大于200</p> {% else %} <p>num介于100和200之间</p>    {% endif %} {% elif num < 100 %} <p>num小于100</p> {% else %} <p>num等于100</p> {% endif %} {% if %} 标签接受and,or或者not来测试多个变量值或者否定一个给定的变量 {% if %} 标签不允许同一标签里同时出现and和or,否则逻辑容易产生歧义,例如下面的标签是不合法的: {% if obj1 and obj2 or obj3 %}

------------------------for循环{% for %}标签允许你按顺序遍历一个序列中的各个元素,每次循环模板系统都会渲染{% for %}和{% endfor %}之间的所有内容

{% for obj in list %} #代表开始执行该次循环 <li>{{ obj}}</li> {% endfor %} #代表结束该次循环 #在标签里添加reversed来反序循环列表: {% for obj in list reversed %} ... {% endfor %} #{% for %}标签可以嵌套: {% for i in list1 %} {% for ii in list2 %} {{ ii }} {% endfor %} {% endfor %} #系统不支持中断循环,系统也不支持continue语句,{% for %}标签内置了一个forloop模板变量, #这个变量含有一些属性可以提供给你一些关于循环的信息 1,forloop.counter表示循环的次数,它从1开始计数,第一次循环设为2881064151: {% for item in todo_list %} {{ forloop.counter }}: {{ item }} {% endfor %} 2,forloop.counter0 类似于forloop.counter,但它是从0开始计数,第一次循环设为0 3,forloop.revcounter 4,forloop.revcounter0 5,forloop.first当第一次循环时值为True,在特别情况下很有用: {% for object in objects %} {% if forloop.first %}         <li class="first">       {% else %}         <li>{% endif %} {{ object }}