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

前言:

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

一、传递变量到Jinja2

app.py

from flask import Flask,render_templateapp = Flask(__name__)class User:def __init__(self,username,email):self.username = usernameself.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

<!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:字典健和对象的属性也可以通过中括号的方式来获取,如下面这样获取

{{ user.name }}
{{ user['name'}}

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

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

from flask import Flask, render_templateapp = Flask(__name__)class User:def __init__(self, username, email):self.username = usernameself.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)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/439520.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

入境游火了!合合信息扫描全能王“扫描证件”功能获海外用户追捧

春节脚步渐近&#xff0c;全国多地出入境证件办理量增长明显。国家移民管理局从1月11日起正式施行便利外籍人员来华5项措施&#xff0c;进一步打通外籍人员来华经商、学习、旅游的相关堵点。某头部旅行服务公司发布的《2024春节旅游市场预测报告》显示&#xff0c;春节期间入境…

C++---列表初始化

一.初始化的四种方法 我们以int作为类型 &#xff0c;a b c d作为变量进行演示 int main() {int a 10; //常见 C语言int b(20);//和函数声明冲突吗&#xff1f; 答&#xff1a;不冲突&#xff0c;因为函数的参数列表有类型 int b(int a)//有没有类型是我们区别很多问题的关键i…

监控招标标书:构建安全智能监控体系的关键一步

监控招标标书是指针对监控设备、系统及相关服务的采购项目所需提交的书面文件&#xff0c;它承载着建设智能监控体系的关键信息和技术方案。在当今社会&#xff0c;监控设备已经成为了各行各业不可或缺的一部分&#xff0c;从安保监控到工业生产&#xff0c;都离不开各类监控设…

thinkadmin操作栏审核通过(操作确认),审核驳回(录入信息)

录入信息页面 {extend name="../../admin/view/main"}{block name=content} <style>textarea {font-size: 16px;padding: 10px;border: 1px solid #ccc;

机器学习_集成学习之Boosting(提升较弱的模型,以降低弱模型的偏差)

文章目录 介绍AdaBoost算法梯度提升算法(GBDT)极端梯度提升(XGBoost)Bagging 算法与 Boosting 算法的不同之处 介绍 Boosting 的意思就是提升&#xff0c;这是一种通过训练弱学习模型的“肌肉”将其提升为强学习模型的算法。要想在机器学习竞赛中追求卓越&#xff0c;Boosting…

qt 动态添加多个button按钮,并添加单击响应

qt动态添加多个button按钮简单&#xff0c;难题是如何对动态的按钮添加响应函数&#xff0c;本文解决方案有两个 方法一&#xff1a;使用信号-槽函数 QString strTemp;int nCol 6;//一行有6个for(int i 0; i < CZList.size(); i){int ii i / nCol;int jj i % nCol;strT…

网络安全防御保护 Day4

要点一&#xff1a;防火墙的智能选路 就近选路&#xff1a; 在访问不同运营商的服务器时直接通过对应运营商的链路&#xff0c;以此来提高通信效率&#xff0c;避免绕路。 策略路由&#xff08;PBR&#xff09;&#xff1a; 这是一种基于用户定义的策略&#xff08;如业务需求、…

springboot3+vue支付宝在线支付案例-解决跨域请求的问题

springboot3vue支付宝在线支付案例-解决跨域请求的问题&#xff01;为了使用外网地址&#xff0c;跨域请求业务接口。我们需要设置一个类。配置一下。 我们采用的方案是。借助于 WebMvcConfigurer package com.example.demo.config;import org.springframework.context.annot…

酷开会员 | 用酷开系统点亮多彩休闲时刻

现代人的休闲方式多种多样&#xff0c;随着科技的发展和生活水平的提高&#xff0c;人们有了更多的选择。而电视&#xff0c;作为一个休闲娱乐的载体&#xff0c;在生活中扮演着重要的角色。 以前&#xff0c;电视是家家户户休闲娱乐的重要组成部分&#xff0c;现在&#xff0…

再谈启动一个Activity大致时序图

太多了&#xff0c;笔者不想写&#xff0c; 读者可通过PlantUML插件查看如下PUML文件生成的时序图。 补充说明下&#xff0c;Android31版本。 startuml https://plantuml.com/sequence-diagram skinparam dpi 800 scale 15000 width scale 5000 heightautonumber Launcher La…

SeaTunnel Web安装 一把成

安装相关jar包&#xff0c;以及SeaTunnel 和Web 打成的包&#xff0c;可以直接使用&#xff0c;但是需要安装MySQL客户端的分享&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1qrt1RAX38SgIpNklbQJ7pA 提取码&#xff1a;0kmf 1. 环境准备 环境名称版本系统环境C…

echarts:获取省、市、区/县、镇的地图数据

目录 第一章 前言 第二章 获取地图的数据&#xff08;GeoJSON格式&#xff09; 2.1 获取省、市、区/县地图数据 2.2 获取乡/镇/街道地图数据 第一章 前言 需求&#xff1a;接到要做大屏的需求&#xff0c;其中需要用echarts绘画一个地图&#xff0c;但是需要的地图是区/县…