渲染模板:
在flask中渲染模板很简单!!!
首先导入render_template模块,然后把html文件放入templates文件夹,在视图函数中,使用render_template( ) 函数来渲染模板即可:
from flask import render_template
.route('/')
def fn():
return render_template('tempalte_1.html')
flask会自动去templates文件夹寻找相对应的html文件。
注意:如果HTML文件是在templates文件夹下 别的的文件夹下,渲染时应带上文件路径:
···
return render_template('file/xxx.html')
···
模板传参:
方式一:以关键字参数(等式)传递参数
from flask import render_template
.route('/')
def fn():
return render_template('html.html',name='lxc')
方式二:以字典形式传参(适用于参数多的情况下)
from flask import render_template
.route('/')
def fn():
dict = {'name':'lxc','age':20,'height':175}
return render_template('html.html',**dict)
<!-- html文件 -->
··· ···
<body>
<h1>hello,{{name}},年龄是{{age}},身高是:{{height}}</h1>
</body>
··· ···
模板中的if语句:
与python语法一样,if判断条件,条件成立执行下边对应html代码块,只不过在结束时,添加 endif 结束,来表名该if语句结束了。
写法:
{% if Boolean %}
<h1>xxx</h1>
{% else %}
<h1>xxx</h1>
{% endif %}
来一个简单应用:路径参数为1时,显示:姓名与注销;否则显示:亲,请登录! 和 注册
route('/<is_login>').
def fn(is_login):
if is_login == '1':
info = {'name':'吕星辰','age':20}
return render_template('html.html',**info)
else:
return render_template('html.html')
# html.html文件
<body>
{% if name %} <!-- 判断是否有name属性,也可以判断是否有age属性-->
<h1>hello,{{name}},年龄{{age}}</h1>
<h1>注销</h1>
{% else %}
<h1>亲,请登录</h1>
<h1>注册账号</h1>
{% endif %}
</body>
当然也可以,在if条件语句中比较:
# html.html文件
<body>
{% if name and age > 18 %} <!-- 判断是否有name属性,也可以判断是否有age属性-->
<h1>hello,{{name}},年龄{{age}}</h1>
<h1>注销</h1>
{% else %}
<h1>亲,请登录</h1>
<h1>注册账号</h1>
{% endif %}
</body>
模板中的for循环:
循环字典及列表,与if语句类似:
# 循环字典
{% for k,v in xxx.items() %}
<h1>{{k}}:{{v}}</h1>
{% endfor %}
# 循环列表
{% for item in xxx %}
<h1>{{item}}</h1>
{% endfor %}
小demo:
route('/').
def fn():
info = {'name':'吕星辰','age':20}
return render_template('html.html',info=info)
# html模板
<body>
{% for k,v in info.items() %}
<h1>{{k}}:{{v}}</h1>
{% endfor %}
</body>