flask jinja2语法介绍

jinja2 渲染的语法
语法 描述
{{ }} 变量,后端定义的数据,直接使用或者使用他的方法
{% %} 具有指定的语法含义,会使用到变量,但是可以实现小的功能,比如:判读,循环

变量代码样例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>hello world 这是个{{ name.upper() }},他{{ age }}岁</h1>
    <h1>hello world 这是个{{ name.replace("i","I") }},他{{ age }}岁</h1>
    <h1>hello world 这是个{{ name.upper() }},他{{ age }}岁,他喜欢 {{ like.0 }},{{ like.1 }}</h1>
    <h1>hello world 这是个{{ name.upper() }},他{{ age }}岁,他喜欢 {{ like.0 }},{{ like.1 }},他的身高{{ tx.h }},体重{{ tx.w }}</h1>
</body>
</html>

循环 for i in list

@app.route("/")
def index():
    is_login = 'unknow'
    person_list = [
        {"name": "张三", "age": 10, },
        {"name": "李四", "age": 20, },
        {"name": "王五", "age": 30, },
        {"name": "赵六", "age": 40, },
        {"name": "田七", "age": 50, },
        {"name": "冯八", "age": 60, }
    ]
    return render_template("index_label.html",**locals())
<table>
    <tr>
        <th>姓名</th>
        <th>年龄</th>
    </tr>
    {% for p in person_list %}
        <tr>
            <td>{{ p.name }}</td>
            <td>{{ p.age }}</td>
        </tr>
        {#for 循环语句结尾 必须写{% endfor %}} 否者报错}#}
    {% endfor %}
</table>

效果图:
在这里插入图片描述

Jinja2是一个流行的Python模板引擎,用于生成动态的HTML、XML或其他格式的文档。下面是一些Jinja2的详细语法介绍。 ## 变量 在Jinja2中,可以使用{{}}来包含变量。例如: ``` <p>Hello, {{ name }}!</p> ``` 这里的`name`是一个变量,它将被替换为相应的值。如果变量不存在,它将被替换为空字符串。 ## 过滤器 Jinja2中的过滤器用于修改变量的值。过滤器可以添加到变量后面,使用`|`符号分隔。例如: ``` <p>{{ message|capitalize }}</p> ``` 这里的`capitalize`过滤器将把`message`的第一个字母转换为大写。 ## 控制结构 Jinja2提供了多种控制结构,用于根据条件或循环来渲染模板。 ### if语句 if语句用于根据条件渲染模板块。例如: ``` {% if user %} <p>Welcome, {{ user }}!</p> {% else %} <p>Please log in.</p> {% endif %} ``` 这里的`user`是一个变量,如果它存在,则显示欢迎消息。否则,显示请登录消息。 ### for循环 for循环用于迭代列表或其他可迭代对象,并渲染模板块。例如: ``` <ul> {% for item in items %} <li>{{ item }}</li> {% endfor %} </ul> ``` 这里的`items`是一个列表,`for`循环将迭代它,并为每个项目渲染一个列表项。 ### 宏 宏是一种定义可重用代码块的方法。例如: ``` {% macro hello(name) %} <p>Hello, {{ name }}!</p> {% endmacro %} ``` 这里的`hello`宏定义了一个`name`参数的代码块。它可以在其他模板中使用。 ## 继承 Jinja2支持模板继承,允许您创建一个基础模板,并在其上创建子模板。例如: ``` <!-- base.html --> <html> <head> <title>{% block title %}{% endblock %}</title> </head> <body> {% block content %}{% endblock %} </body> </html> <!-- child.html --> {% extends "base.html" %} {% block title %}My Page{% endblock %} {% block content %} <p>Welcome to my page!</p> {% endblock %} ``` 这里的`child.html`模板扩展了`base.html`模板,并覆盖了`title`块。它还定义了一个`content`块,用于呈现页面内容。 ## 自定义过滤器和函数 Jinja2允许您编写自己的过滤器和函数,以扩展其功能。例如: ``` from jinja2 import Environment def my_filter(value): return value.upper() def my_function(): return "Hello, world!" env = Environment() env.filters['my_filter'] = my_filter env.globals['my_function'] = my_function ``` 这里的`my_filter`函数将字符串转换为大写。它被注册为一个过滤器,并命名为`my_filter`。`my_function`函数被注册为全局函数,并可以在模板中使用。 这些只是Jinja2的一些基本语法。它还具有许多高级功能,如继承、块、变量范围和模板包含。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值