Flask之Jinja2模板
Jinja2模板
Fkask中的页面渲染是通过jinjia2模块实现的,依赖于render_template函数
默认在template文件路径下
模板传参
(1)如果只有一个或者少量参数,直接在render_template函数中添加关键字参数就可以了。
使用格式:
return render_template('模板文件',key=value)
(2)如果有多个参数的时候,那么可以先把所有的参数放在字典中,然后在render_template中, 使用两个星号,把字典转换成关键参数传递进去,这样的代码更方便管理和使用。
context = {
'username' : '站长',
'age' : '18',
'gender' : '男'
}
# 定义一个字典,双星号把字典转换成关键参数传递进去
return render_template('index.html' , **context)
常见语法
模版讲解:
- { { … }}:装载一个变量,模板渲染的时候,会使用传进来的同名参数这个变量代表的值替换掉。
- {% … %}:装载一个控制语句。
- {# … #}:装载一个注释,模板渲染的时候会忽视这中间的值。
常见语法:
获取变量:
{
{变量}}
分支语句:
{% if 条件A %}
语句1
{% elif 条件B %}
语句2
{%endif%}
执行流程:
那个条件为True,执行哪个语句
顺序判断
循环语句:
{% for 变量 in 容器 %}
{%endfor%}
Jinja2中for循环内置常量
- loop.index 当前迭代的索引(从1开始)
- loop.index0 当前迭代的索引(从0开始)
- loop.first 是否是第一次迭代,返回True/False
- loop.last 是否是最后一次迭代,返回True/False
- loop.length 序列的长度
具体使用
html文件内容:用了条件判断和循环
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
{% if title %}
<title>{
{ title }}</title>
{% else %}
<title>这是默认标题</title>
{% endif %}
</head>
<body>
<h1>{
{ user.name }}</h1>
{% for news in news_list %}
<p>{
{ news.author }} say:</p><p>{
{ news.article }}</p>
{% endfor %}
{# 字典遍历 #}
{% for k,v in user.items() %}
<p>{
{ k }}:{
{ v }}</p>
{% endfor %}
</body>
</html>
视图函数:
@app.route('/ind