在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>