在web开发中,我们经常需要通过将数据库中的数据取出,然后填入页面中,而不是像刚开始写html页面那样,所有的东西都是静态指定的,而在Django中,想要将后端从数据库中查出的数据传入前端页面,就用到了模板语法,由此易知,模板语法是写在Django的html页面中的。
在模板语法中,用{{ }}渲染变量,基本语法为{{ 变量名 }};用{% %}渲染语句,基本语法为{% 语句 %};以上就是模板语法的两个重要的标签,下面介绍模板语法基本的语句,针对变量的渲染,会在过程中以实例代替,这里不做讨论。
1、for循环 示例:
{% for item in person_list %} #这是写在html类型文件中的,在Django框架中的templates文件夹 <p>{{ item }}</p> {% endfor %} <p>{{ forloop.counter }}{{ item }}</p> forloop.counter:是一个记住循环次数的东西注: 在本示例中,person_list代表要循环的列表(字典等等),其是由view函数最后的return参数指定的(render函数的参数里最后的字典),其中item代表每项的内容,中间是循环体。 基本语法总结:
{% for 变量 in 视图函数传入的数据 %} 具体的操作 {% endfor %}附: 视图函数即views.py文件中的函数 2、if判断(for循环中的) 示例:
{% if age > 100 %} <p>100</p> {% elif age <= 100 %} <p>{{ age }}</p> {% endif %}注: 其中,age是后端views.py文件中相应的视图函数传入数据,表示的意思是如果age大于100就在页面中渲染上面的标签,即只显示<p>100</p>;如果age小于等于100,则显示真实年龄。 基本语法总结:
{% if 条件1 %} 条件1为真执行的操作 {% elif 条件2 %} 条件2为真要执行的操作 {% endif %}3、with语句 示例:
#给person_list.2.name起别名,别名为name {% with name=person_list.2.name %} {{ name }} {% endwith %}说明: 本例表示将“person_list.2.name”重命名为“name” 基本语法:
{% with 别名=真名 %} 用别名进行的操作 {% endwith %}4、csrf标签: csrf标签是Django自带的一个安全防护措施,在用form表单进行进行post请求时,必须要加入{% csrf_token %}标签,否则会报错,浏览器显示服务器拒绝服务(403错误) 示例:
<form action="" method="post"> <input type="text" name="user"> <input type="submit"> </form> <!--加入{% csrf_token %}可以使form顺利通过服务器认证--> <form action="" method="post"> {% csrf_token %} <input type="text" name="user"> <input type="submit"> </form>注: {% csrf_token %}这个标签被渲染成了<input type="hidden" name="csrfmiddlewaretoken" value="uvNIfk4OUPbmKf9dROTqCkfKhmVdD88oem4qPJaejhG6C7lYdVPZGKmyUbPdUG0q">;其中value是不固定的,并且这个语句必须放在form表单内部才可以生效,这个机制具有一定的防护效果,可以防止某些用户访问服务器。 基本语法:
<form action="url" method="post"> {% csrf_token %} 其他html标签 </form>