Flask使用Jinja2渲染模版使用变量实战

前言:

Flask 使用 Jinja2 作为其默认模板引擎,这意味着您可以直接在 Flask 应用程序中使用 Jinja2 模板。您可以创建模板文件,然后在视图函数中渲染这些模板,将动态数据传递给模板进行渲染,并最终生成最终的 HTML 页面。

一、传递变量到Jinja2

app.py

python 复制代码
from flask import Flask,render_template

app = Flask(__name__)


class User:
    def __init__(self,username,email):
        self.username = username
        self.email = email

@app.route('/')
def index():
    hobby = "游戏"
    person = {
        "name": "张三",
        "age": 181
    }
    user = User("李四", "xx@qq.com")
    return render_template("index.html", hobby=hobby, person=person, user=user)


if __name__ == '__main__':
    app.run(debug=True)

index.html

python 复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>变量使用</title>
    </head>
    <body>
      <h1>我的兴趣爱好是:{{ hobby }}</h1>
      <p>person的姓名是:{{ person.name }},person的年龄是:{{ person.age }}</p>
      <p>user的用户名是:{{ user.name }},user的邮箱是:{{ user.email }}</p>
    </body>
    </html>

运行项目效果

PS:字典健和对象的属性也可以通过中括号的方式来获取,如下面这样获取

python 复制代码
{{ user.name }}
{{ user['name'}}

二、使用关键字参数方式传递

以上案例中,传递了3个变量到模版中,在变量较多的情况下,首先可以把所有的变量放到字典中,然后再给render_template传递参数时使用**语法,将字典变成关键字参数,以上的视图函数可以修改为下面的形式:

python 复制代码
from flask import Flask, render_template

app = Flask(__name__)


class User:
    def __init__(self, username, email):
        self.username = username
        self.email = email


@app.route('/')
def index():
    hobby = "游戏"
    person = {
        "name": "张三",
        "age": 18
    }
    user = User("李四", "xx@qq.com")
    context = {
        "hobby": hobby,
        "person": person,
        "user": user
    }
    return render_template("index.html", **context)


if __name__ == '__main__':
    app.run(debug=True)

最后执行效果其实是一样的

相关推荐
V搜xhliang02466 分钟前
基于深度学习的地物类型的提取
开发语言·人工智能·python·深度学习·神经网络·学习·conda
代码小鑫28 分钟前
A032-基于Spring Boot的健康医院门诊在线挂号系统
java·开发语言·spring boot·后端·spring·毕业设计
API快乐传递者37 分钟前
除了网页标题,还能用爬虫抓取哪些信息?
开发语言·爬虫·python
豌豆花下猫1 小时前
REST API 已经 25 岁了:它是如何形成的,将来可能会怎样?
后端·python·ai
喔喔咿哈哈1 小时前
【手撕 Spring】 -- Bean 的创建以及获取
java·后端·spring·面试·开源·github
夏微凉.1 小时前
【JavaEE进阶】Spring AOP 原理
java·spring boot·后端·spring·java-ee·maven
平头哥在等你2 小时前
Python中的正则表达式教程
python·正则表达式
Best_Me073 小时前
如何在Pycharm的终端里进入自己的环境
ide·python·pycharm
不会编程的懒洋洋3 小时前
Spring Cloud Eureka 服务注册与发现
java·笔记·后端·学习·spring·spring cloud·eureka
NiNg_1_2343 小时前
SpringSecurity入门
后端·spring·springboot·springsecurity