• Flask框架中Jinja2模板控制语句


            Jinja2模板中所有控制语句都放在{% ... %}中,并且以{% endxxx %}来进行结束,Jinja中常用的控制语句有if/for..in..。

    控制语句:if

    if:if语句和python中的类似,可以使用>,<,<=,>=,==,!=来进行判断,也可以通过and,or,not,()来进行逻辑合并操作。

    示例代码:

    main.py

    1. from flask import Flask, render_template
    2. app = Flask(__name__)
    3. @app.route('/')
    4. def index():
    5. content = {
    6. "names": {"name": 'dgw'},
    7. "age": 25,
    8. "sex": '男'
    9. }
    10. return render_template('index.html', **content)
    11. if __name__ == '__main__':
    12. app.run()

    index.html

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>首页title>
    6. head>
    7. <body>
    8. 欢迎来到首页!
    9. <div>
    10. {% if age > 25 %}
    11. 您已经超过25岁了!
    12. {% elif age < 25 %}
    13. 您的年龄小于25岁!
    14. {% else %}
    15. 您的年龄今年25岁了!
    16. {% endif %}
    17. div>
    18. body>
    19. html>

    运行结果:

    控制语句:for...in...

    for...in...:for循环可以遍历任何一个序列包括列表、字典、元组。并且可以进行反向遍历。

    列表遍历:

    main.py

    1. from flask import Flask, render_template
    2. app = Flask(__name__)
    3. @app.route('/')
    4. def index():
    5. name_list = ['张三', '李四', '王五']
    6. return render_template('index.html', name_list=name_list)
    7. if __name__ == '__main__':
    8. app.run()

    index.html

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>首页title>
    6. head>
    7. <body>
    8. 欢迎来到首页!
    9. <ul>
    10. {% for name in name_list %}
    11. <li>{{ name }}li>
    12. {% endfor %}
    13. ul>
    14. body>
    15. html>

    运行结果:

    字典遍历:

    main.py

    1. from flask import Flask, render_template
    2. app = Flask(__name__)
    3. @app.route('/')
    4. def index():
    5. name_dict = {
    6. 'name1': '张三',
    7. 'name2': '李四',
    8. 'name3': '王五'
    9. }
    10. return render_template('index.html', name_dict=name_dict)
    11. if __name__ == '__main__':
    12. app.run()

    index.html

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>首页title>
    6. head>
    7. <body>
    8. 欢迎来到首页!
    9. <ul>
    10. {% for key, value in name_dict.items() %}
    11. <li>{{ key }}:{{ value }}li>
    12. {% endfor %}
    13. ul>
    14. body>
    15. html>

    运行结果:

    序列中没有值时进入else中:

    main.py

    1. from flask import Flask, render_template
    2. app = Flask(__name__)
    3. @app.route('/')
    4. def index():
    5. name_dict = {
    6. }
    7. return render_template('index.html', name_dict=name_dict)
    8. if __name__ == '__main__':
    9. app.run()

    index.html

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>首页title>
    6. head>
    7. <body>
    8. 欢迎来到首页!
    9. <ul>
    10. {% for key, value in name_dict.items() %}
    11. <li>{{ key }}:{{ value }}li>
    12. {% else %}
    13. <li>Not found!li>
    14. {% endfor %}
    15. ul>
    16. body>
    17. html>

    运行结果:

    补充

            Jinja中的for循环还包含以下变量,可以用来获取当前的遍历状态:

    变量描述
    loop.index当前迭代的索引(从1开始)
    loop.index0当前迭代的索引(从0开始)
    loop.first是否是第一次迭代,返回True或False
    loop.last是否是最后一次迭代,返回True或False
    loop.length序列的长度

    注意:不可以使用continue和break表达式来控制循环的执行。

  • 相关阅读:
    【愚公系列】2022年7月 Go教学课程 004-Go代码注释
    圣诞老人遇见 GenAI:利用大语言模型、LangChain 和 Elasticsearch 破译手写的圣诞信件
    Multivariate Time-series Anomaly Detection viaGraph Attention Network
    预约到家按摩小程序开发定制同城服务
    gitlab git lfs的替代软件整理汇总及分析
    Maxwell 一款简单易上手的实时抓取Mysql数据的软件
    面向对象
    计算机考研 创新 简史 专利 量子力学等
    MySQL优化:从十几秒优化到三百毫秒
    Python的特点有哪些?
  • 原文地址:https://blog.csdn.net/weixin_44799217/article/details/126326473