所有的控制语句都是放在{% … %}中,并且有一个语句{% endxxx %}来进行结束,Jinja中常用的控制语句有if/for…in…
一、条件控制 : if 语句
- if语句和python中的类似,可以使用>,<,<=,>=,==,!=来进行判断,也可以通过and,or,not,()来进行逻辑合并操作
from flask import Flask,render_template
app=Flask(__name__)
context={
'username': '老萝卜'
}
@app.route("/")
def if_for():
return render_template('demo_flaskif.html', **context)
if __name__=="__main__":
app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Flask if控制语句演示</title>
</head>
<body>
{
%if username=="老萝卜"%}
<p>当前用户是:{
{
username}}</p>
{
%else%}
<p>当前用户不是:老萝卜,而是{
{
username}}</p>
{
%endif%}
</body>
</html>
将username改为其它值,‘username’: ‘laoluobo’
二、循环控制:for…in…
- for循环可以遍历任何一个序列包括列表、字典、元组。并且可以进行反向遍历
- 如果序列中没有值的时候,进入else
- 并且Jinja中的for循环还包含以下变量,可以用来获取当前的遍历状态
变量 | 描述 |
---|---|
loop.index | 当前迭代的索引(从1开始) |
loop.index0 | 当前迭代的索引(从0开始) |
loop.first | 是否是第一次迭代,返回True或False |
loop.last | 是否是最后一次迭代,返回True或False |
loop.length | 序列的长度 |
- 另外,不可以使用continue和break表达式来控制循环的执行。
from flask import Flask,render_template
app=Flask(__name__)
context={
'books': ['Python', 'Java', 'PHP'],
'book': {
'Python': 666,
'Java': 777,
'PHP': 888
},
"netebooks":[]
}
@app.route("/")
def flask_for():
return render_template('demo_flaskfor.html', **context)
if __name__=="__main__":
app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Flask if控制语句演示</title>
</head>
<body>
<p> 循环显示列表 books:</p>
{
% for book in books %} <!--循环显示列表-->
<p>{
{
book }}</p>
{
% else %}
<p>列表books为空列表</p>
{
% endfor %}
<hr>
<p> 循环显示列表 notebooks:</p>
{
% for book in notebooks %} <!--循环显示空列表-->
<p>{
{
book }}</p>
{
% else %}
<p>列表notebooks为空列表</p>
{
% endfor %}
<hr>
<p>循环显示字典:</p>
{
% for i in book %} <!--循环显示字典-->
<p>{
{
i }}</p>
{
% endfor %}
<hr>
<p>循环显示字典的key和value</p>
{
% for key, value in book.items() %} <!--循环显示字典的key和value -->
<p>{
{
key }} -- {
{
value }}</p>
{
% endfor %}
<hr>
<p>显示循环当前遍历状态 </p>
{
% for book in books %}
<p>{
{
book }}</p>
<p>当前迭代的索引(从0开始):{
{
loop.index0 }}</p>
{
% if loop.first %}
<p>是否是第一次迭代,返回True或False:{
{
loop.first }}</p>
{
% endif %}
{
% if loop.last %}
<p>是否是最后一次迭代,返回True或False:{
{
loop.last }}</p>
{
%endif%}
{
% endfor %}
</body>
</html>