• 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表达式来控制循环的执行。

  • 相关阅读:
    PL/SQL 数组
    Java 函数式编程
    【软考-中级】系统集成项目管理工程师 【17 信息系统安全管理】
    SQLZOO——5 SUM and COUNT
    优化程序性能
    低代码,助力中小企业快速实现信息化
    基于CNN-BiLSTM与三支决策的入侵检测方法
    5_SqlSugar实体中的细节
    比特币势在解决法币阻碍进步的问题
    最小二乘估计心得
  • 原文地址:https://blog.csdn.net/weixin_44799217/article/details/126326473