Flask模板--传参和逻辑分支

1. 模板传参

单参数
  • 前端参数化
  • 模板放在templates文件夹下,默认加载templates目录下文件
  • 如果只有一个参数,直接在render_template函数中添加参数即可
  • 使用{{ * }}获取变量
@app.route('/')
def index():
    return render_template('demotest.html', name='hjk')
<body>
    <p>hello, {{ name }}</p>
</body>

输出结果如下图:
在这里插入图片描述

多参数
  • 方法1: 对象取值
  • 可以使用{{ params[property ]}}{{ params.property }}访问模型中的属性或字典
+ @app.route('/')
def index():
    d  = {'name': 'hjk', 'age': 18}
    return render_template('demotest.html', p=d)

<body>
    <p>hello, {{ p.name }}</p>
    <p>hello, {{ p['age'] }}</p>
</body>

输出结果如下图:
在这里插入图片描述

  • 方法2:传参解包
  • 可以先把所有参数放在字典中,然后在render_template中使用两个**解包传参
@app.route('/')
def index():
    d  = {'name': 'hjk', 'age': 18}
    return render_template('demotest.html', **d)
<body>
    <p>hello, {{ name }}</p>
    <p>hello, {{ age }}</p>
</body>
设置变量
  • 前端模板设置变量
<body>
    {% set name='hjk' %}
    <p>hello, {{ name }}</p>
</body>

2. 逻辑分支

if分支
  • 案例说明:如果age>18岁,输出name,否则给出提示
  • 注意结尾的{% endif %}
@app.route('/')
def index():
    d  = {'name': 'hjk', 'age': 18}
    return render_template('demotest.html', **d)


<body>
    {% if age>18 %}
    <p>hello, {{ name }}</p>
    {% else %}
    <p>sorry, 您未成年,请在监护人的陪同下使用监护人的账号登陆</p>
    {% endif %}
</body>

在这里插入图片描述

for循环
  • 字典、列表的遍历与python基本类似
@app.route('/')
def index():
    d  = [{'name': 'hjk', 'age': 18},
          {'name': 'hjl', 'age': 19},
          {'name': 'hjt', 'age': 12}]
    return render_template('demotest.html', P=d)

<body>
    {% for p in P %}
        {% if p.age>18 %}
        <p>hello, {{ p.name }}</p>
        {% else %}
        <p>sorry, 您未成年,请在监护人的陪同下使用监护人的账号登陆</p>
        {% endif %}
    {% endfor %}
</body>

在这里插入图片描述

  • loop
  • loop.index : 获取当前迭代的次数(从1开始)
  • loop.index0 :从0开始计数(从0开始)
  • loop.revindex : 到循环结束需要迭代的次数(从1开始)
  • loop.revindex0 : 到循环结束需要迭代的次数(从0开始)
  • loop.first : 判断是否是第一个,返回True/False
  • loop.last : 判断是否是最后一个,返回True/False
@app.route('/')
def index():
    d  = [{'name': 'hjk', 'age': 18},
          {'name': 'hjl', 'age': 19},
          {'name': 'hjt', 'age': 12}]
    return render_template('demotest.html', P=d)

<body>
    {% for p in P %}
        <p>{{ loop.first }}</p>
        <p>{{ loop.revindex0 }}</p>
    {% endfor %}
</body>

在这里插入图片描述

  • jinja2模版生成页面时会产生大量空行和空格解决办法:
{%- if * -%}
...
{%- endif -%}
{%- for p in P -%}
...
{%- endfor -%}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值