【PythonWeb开发】Flask视图函数传递数据到前端模版的方法总结。

        在Flask框架中,视图函数返回响应有四种常见方式,都得掌握。

一、返回文本内容

        可以直接返回字符串,Flask会自动将其转换为一个响应对象,具有默认的text/html内容类型。

@app.route('/return_text')
def return_text():return "这是一段文本数据"

二、返回JSON格式内容

        使用jsonify函数(前后端分离),它是Flask提供的辅助函数,专门用于将Python字典或其他可序列化对象转换为JSON响应。

from flask import jsonify@app.route('/return_json')
def return_json():data = {"name": "xiaodai", "age": 18}return jsonify(data)

三、返回自定义的Response对象

        在Flask中,可以直接实例化一个Response对象来更精细地控制响应的内容、状态码以及头部信息。

from flask import Response@app.route('/custom_response')
def custom_response():# 创建一个自定义的响应内容custom_content = "这是自定义的响应内容"# 实例化一个Response对象response = Response(response=custom_content,  # 响应内容status=200,  # HTTP状态码,默认是200 OKmimetype='text/plain',  # 响应的MIME类型,默认为'text/html'headers={  # 自定义响应头'X-Custom-Header': 'Some Value'})return response

        返回JSON内容还能和Response对象一起使用,只需将jsonify()返回的值用get_data()取出来传给response参数就行。

@app.route('/api/data', methods=['GET'])
def get_data():data = {"message": "Hello from the API","status": "success"}# 使用jsonify来创建标准的JSON响应内容,然后包装到自定义的Response中json_response = jsonify(data)# 转换为Response对象以添加自定义头部response = Response(response=json_response.get_data(),  # 获取jsonify生成的字节流数据status=200,mimetype='application/json',  # 指定为JSON类型headers={'X-API-Version': '1.0'  # 自定义响应头})return response

四、渲染模版并返回数据

        使用render_template函数(前后端不分离),它会加载指定的HTML模板文件,并且可以传递字典参数给模板以便填充动态内容。

from flask import render_template@app.route('/')
def index():username = "小呆"return render_template('index.html', username=username)

        还可以先使用render_template函数渲染模板得到HTML内容,然后将这个内容传入Response的构造函数中,创建一个自定义的Response对象。这样,你可以在保留模板渲染功能的同时,进一步自定义响应的其他方面。

from flask import render_template, Response@app.route('/custom-rendered-template')
def custom_rendered_template():# 使用render_template渲染模板rendered_template = render_template('example.html')# 将渲染结果包装进自定义的Response对象中response = Response(response=rendered_template,  # 渲染后的模板内容status=200,  # 可以根据需要修改状态码mimetype='text/html',  # 默认情况下,render_template生成的是HTML内容,所以这里保持'text/html'headers={  # 添加任何自定义的响应头'X-Custom-Header': 'Custom Value'})return response

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

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

相关文章

力扣第211题“添加与搜索单词 - 数据结构设计”

关注微信公众号 数据分析螺丝钉 免费领取价值万元的python/java/商业分析/数据结构与算法学习资料 在本篇文章中,我们将详细解读力扣第211题“添加与搜索单词 - 数据结构设计”。通过学习本篇文章,读者将掌握如何实现一个支持通配符搜索的字典数据结构&…

WebStorm 配置 PlantUML

1. 安装 PlantUML 插件 在 WebStorm 插件市场搜索 PlantUML Integration 并安装,重启 WebStorm 使插件生效。 2. 安装 Graphviz PlantUML 需要 Graphviz 来生成图形。使用 Homebrew 安装 Graphviz: 打开终端(Terminal)。确保你…

java的Nio演进

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 java的Nio演进 前言简介正文总结 前言 在JDK1.4推出JavaNIO之前,基于Java的所有Socket通信都采用了同步阻塞模式 (BIO),这种一请求一应答的通信模型简化了上层的应用开发,但…

C语言小例程28/100

题目&#xff1a;利用递归方法求5!。 程序分析&#xff1a;递归公式&#xff1a;fnfn_1*4! #include <stdio.h>int main() {int i;int fact(int);for(i0;i<6;i){printf("%d!%d\n",i,fact(i));} } int fact(int j) {int sum;if(j0){sum1;} else {sumj*fac…

消防认证-防火门

一、消防认证 消防认证是指消防产品符合国家相关技术要求和标准&#xff0c;且通过了国家认证认可监督管理委员会审批&#xff0c;获得消防认证资质的认证机构颁发的证书&#xff0c;消防产品具有完好的防火功能&#xff0c;是住房和城乡建设领域验收的重要指标。 二、认证依…

嵌入式系统中串口通信粘包问题的解决方案(C语言)

文章目录 0. 引言1. 什么是粘包问题&#xff1f;2. 粘包问题的影响3. 处理粘包问题的思路4. 不同处理方法的优缺点分析5. 实现方案5.1 数据包格式5.2 代码实现 0. 引言 在嵌入式系统中&#xff0c;串口通信是一种常见且重要的数据传输方式。然而&#xff0c;由于硬件和软件的限…

闪迪sd卡视频格式化数据恢复方法,你了解吗

咨询&#xff1a;“我不小心将闪迪SD卡格式化了&#xff0c;里面的重要视频文件全都不见了。我感到非常焦虑&#xff0c;因为这些视频对我来说意义非凡。现在急需找到方法来恢复&#xff01;&#xff01;” 在数字时代&#xff0c;SD卡已成为我们日常生活中不可或缺的数据存储设…

python中数据的作用域

一、命名空间 在 Python 中&#xff0c;命名空间是一个系统&#xff0c;它用于确保名字的唯一性&#xff0c;并防止命名冲突。命名空间是一个存储变量名称&#xff08;或者更广泛地说&#xff0c;标识符&#xff09;与对象之间映射的抽象概念。每个变量名你在程序中创建&#x…

本篇内容:ArkTS开发系列之事件(2.8.1触屏、键鼠、焦点事件)

上篇回顾&#xff1a; ArkTS开发系列之导航 (2.7动画&#xff09; 本篇内容&#xff1a;ArkTS开发系列之事件&#xff08;2.8.1触屏、键鼠、焦点事件&#xff09; 一、知识储备 1. 触屏事件&#xff1a;包括点击事件、拖拽事件、触摸事件。 点击事件 Button()....onClick(…

msvcp120.dll丢失怎么办,找不到msvcp120.dll的多种解决方法

最近&#xff0c;我在运行一个程序时遇到了一个错误&#xff0c;系统提示找不到msvcp120.dll文件&#xff0c;无法继续执行代码。这让我感到非常困扰&#xff0c;因为这个问题导致我无法正常运行这个程序。经过一番搜索和尝试&#xff0c;我找到了几种修复这个问题的方法&#…

如何开发、使用 Starter

开发 第一步&#xff1a;创建starter工程hello-spring-boot-starter并配置pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchem…

SpringBoot优点达项目实战:项目初始化(一)

SpringBoot优点达项目实战&#xff1a;项目初始化&#xff08;一&#xff09; 文章目录 SpringBoot优点达项目实战&#xff1a;项目初始化&#xff08;一&#xff09;1、项目介绍2、项目搭建3、依赖导入4、数据准备 1、项目介绍 技术框架 SpringbootmybatisPlusvueknife 2、项目…

什么是生成式AI?

生成式AI&#xff08;Generative AI&#xff09;是一类利用机器学习和人工智能技术来生成内容的系统。这些系统可以创建文本、图像、音乐、视频等各种类型的内容。生成式AI通过学习大量的数据来理解和模仿人类的创作过程&#xff0c;从而生成新的、原创的内容。以下是生成式AI的…

创建App

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Django项目中&#xff0c;推荐使用App来完成不同模块的任务&#xff0c;通过执行如下命令可以启用一个应用程序。 python manage.py startapp app…

RT-Thread的Finsh实现学习

学习原因 工作中&#xff0c;使用同事开发的调试软件&#xff0c;输入参数打印的函数名就可以打印参数&#xff0c;但看不到代码实现&#xff0c;只能用自己微薄的知识积累去猜一下&#xff0c;之前尝试过&#xff0c;专门写一个函数&#xff0c;去解析编译生成的map文件&#…

名侦探李先生第一话:谁是真正的凶手(只出现一次的数字相关题解(力扣)+位操作符回忆)

引子&#xff1a;我们在之前的案子中破解过基础的单身狗问题&#xff0c;那面对更有挑战的案子&#xff0c;且看李先生如何破局&#xff0c;那下凶手&#xff01; 复习&#xff1a; 1&#xff0c;位操作符&#xff1a; 正整数原&#xff0c;反&#xff0c;补码都相同 首位是…

RocketMQ如何添加JVM监控

这里是小奏,觉得文章不错可以关注公众号小奏技术 JVM监控选型 本次JVM监控我们采用prometheus官方提供的jmx_exporter来实现 RocketMQJVM开发 整体目录 1. 新增agent目录 我们在distribution目录新增一个agent模块&#xff0c;然后添加两个文件 jmx_prometheus_javaagent-…

NtripShare2024年第二季度主要技术进展

NtripShare Cloud GNSS解算云平台方面 1、解算引擎增加根据卫星多路径效应自动剔除卫星的算法。 2、解算引擎增加解算时间段限制&#xff08;发现贵州某地在晚12点周期性效果变差&#xff09;。 3、增加2000坐标至地方坐标系转换的支持(七参数、四参数、TGO高程拟合&#x…

高性能STL库 EASTL 、高性能JSON库

GitHub - electronicarts/EASTL: EASTL stands for Electronic Arts Standard Template Library. It is an extensive and robust implementation that has an emphasis on high performance. 兄弟们&#xff0c;对STL要求性能高的可以试试这个EASTL库&#xff01;&#xff01…

原神数据库实训存储过程

原神数据库存储过程 user表存储过程 drop procedure if exists insert_user; DELIMITER $$ CREATE PROCEDURE insert_user(in userName VARCHAR(255), IN weapon_type INT,IN dendro VARCHAR(255), in rarity int,in user_level int ) BEGIN if user_level>90 OR user_lev…