flask返回数据类型
服务器这种后台返回的数据只能是string,json或者是文件类型,对应Html的解析文件类型
无法返回自定义的元组,只能返回规定好的元组,说白了只第一个元素有效
- 所有返回前台的内容其实都应该是Response的对象或者其子类,我们看到如果返回的是字符串直接可以写成return u'字符串内容'的形式,但是其实这个字符串也是经过了Response包装的:return Response(u'字符串')
- 我们看一段代码:
- # coding: utf-
- from flask import Flask, Response
- app = Flask(__name__) # type: Flask
- app.debug = True
- @app.route('/')
- def hello_world():
- return 'Hello World!'
- @app.route('/login/')
- def login():
- return Response(u'login')
- if __name__ == '__main__':
- app.run()
- 代码里我新建了一个login函数,返回的就是用Response包装后的字符串,访问地址可以看到页面打印了login。
- 我们有时候需要返回数组、字典之类的数据,但是数组或者字典这些数据是不能直接return的。这个时候怎么办呢?答案就是你必须将数组或字典转换成json后再返回(这就是为什么我们做接口测试的时候传参前用json.loads()将字符串转换成字典的原因了),因为json就是一个字符串。
- 数组或字典转换成json的函数叫做jsonify,你需要先导入from flask import jsonify或者像船长下面代码里写的那样,一下子导入好几个库:
- # coding: utf-
- from flask import Flask, Response, jsonify
- app = Flask(__name__) # type: Flask
- app.debug = True
- @app.route('/')
- def hello_world():
- return 'Hello World!'
- @app.route('/login/')
- def login():
- dict1 = {"name": "Warren"}
- return jsonify(dict1)
- if __name__ == '__main__':
- app.run()
- 上面代码里`dict1`的数据类型是一个字典,我们通过`jsonify()`将其转换成了`json`,就可以成功返回了,去页面,看到:
- 除了字符串以外,还可以返回元组,但是返回元组是有要求的,元组内容包括三个参数:response、status_code、headers,其中:
- response指页面打印信息,可以是字符串或Response对象
- status_code指状态码,成功200,找不到页面404等等
- headers指信息头
- # coding: utf-
- from flask import Flask, Response, jsonify
- app = Flask(__name__) # type: Flask
- app.debug = True
- @app.route('/')
- def hello_world():
- return 'Hello World!'
- @app.route('/login/')
- def login():
- dict1 = {"name": "Warren"}
- return jsonify(dict1)
- @app.route('/set/')
- def myset():
- return u'返回元组', , {"name": "Warren"}
- if __name__ == '__main__':
- app.run()
- 看上面代码的myset函数,我return了一个元组(单个值的元组可以不写括号,而且如果你加上括号,pycharm会有黄线提醒你remove redundant parentheless,意思就是去掉多余的括号)。
- 然后我们到页面访问/set/这个页面,打开F12就是开发者工具,然后刷新页面:
元组
- demo.py(函数返回多个值(元组)):
- # 定义函数,有多个返回值(返回元组)
- def measure():
- """测量温度和湿度"""
- print("测量开始...")
- temp =
- wetness =
- print("测量结束...")
- # 元组-可以包含多个数据,因此可以使用元组让函数一次返回多个值
- # 如果函数返回的类型是元组,小括号可以省略
- # return (temp, wetness)
- return temp, wetness # 小括号可以省略
- # 元组
- result = measure()
- print(result) # (, )
- # 需要单独的处理温度或者湿度 - 不方便
- print(result[]) #
- print(result[]) #
- # 如果函数返回的类型是元组,同时希望单独的处理元组中的元素
- # 可以使用多个变量,一次接收函数的返回结果
- # 注意:使用多个变量接收结果时,变量的个数应该和元组中元素的个数保持一致
- gl_temp, gl_wetness = measure() # 接受函数多个返回值
- print(gl_temp) #
- print(gl_wetness) #
- demo.py(利用元组交换变量值):
- a =
- b =
- # 解法1:-使用其他变量
- # c = a
- # a = b
- # b = c
- # 解法2:-不使用其他的变量
- # a = a + b
- # b = a - b
- # a = a - b
- # 解法3:-Python 专有
- # a, b = (b, a)
- # 提示:等号右边是一个元组,只是把小括号省略了
- a, b = b, a
- print(a) #
- print(b) #
- ————————————————
- 版权声明:本文为CSDN博主「houyanhua1」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
- 原文链接:https://blog.csdn.net/houyanhua1/article/details/83999767
flask返回数据类型的更多相关文章
- mybatis返回数据类型为map,值为null的key没返回
创建mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...
- 11月15日下午 ajax返回数据类型为XML数据的处理
ajax返回数据类型为XML数据的处理 /*XML:可扩展标记语言 HTML:超文本标记语言 标签:<标签名></标签名> 特点: 1.必须要有一个根 2.标签名自定义 3.对 ...
- 11月13日上午ajax返回数据类型为JSON数据的处理
ajax返回数据类型为JSON数据的处理 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &qu ...
- WebAPI返回数据类型
最近开始使用WebAPI,上手很容易,然后有些疑惑 1.WebAPI默认返回什么数据类型,json还是xml? 2.怎么修改WebAPI的返回数据类型,我用IE浏览器请求返回的数据都是JSON格式的, ...
- WebAPI返回数据类型解惑
本文来自:http://www.cnblogs.com/lzrabbit/archive/2013/03/19/2948522.html 最近开始使用WebAPI,上手很容易,然后有些疑惑 1.Web ...
- WebAPI返回数据类型解惑[转]
最近开始使用WebAPI,上手很容易,然后有些疑惑 1.WebAPI默认返回什么数据类型,json还是xml? 2.怎么修改WebAPI的返回数据类型,我用IE浏览器请求返回的数据都是JSON格式的, ...
- 使用jquery、ajax不刷新页面打印表格(返回数据类型text、json);
效果图: 一:返回数据是text时 1.表单代码: <body> <form action="#" method="post"> 姓名: ...
- MVC4.0 WebApi如何自定义返回数据类型
1.客户端可以通过HTTP Accept消息头来通知服务器客户端想要什么样的MIME类型数据,例如:application/json则代表告诉服务器想要的是Json数据 2.服务器端撇开客户端的请求类 ...
- Asp.Net WebAPI配置接口返回数据类型为Json格式
Asp.Net WebAPI配置接口返回数据类型为Json格式 一.默认情况下WebApi 对于没有指定请求数据类型类型的请求,返回数据类型为Xml格式 例如:从浏览器直接输入地址,或者默认的XM ...
随机推荐
- 部署Django到云服务器(centos+nginx+mysql+uwsgi+python3)【操作篇(2)】
接上篇操作篇(1):https://blog.csdn.net/jacky_zhuyuanlu/article/details/82880612 (七)创建Django项目 (1)建立文件夹,存放网站 ...
- mac eclipse 创建Java 工程
首先创建Java工程testjavapro,创建包testjavapro,接着创建类testjava 参考: https://www.jianshu.com/p/20280b850c95
- Java 基础:单例模式 Singleton Pattern
1.简介 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该类负责创 ...
- 小程序原生js获取用户权限
1.首先要有一个按钮 <view name="authorizemodal"> <view class="drawer_screen" wx: ...
- git图形化统计工具 - windows下gitstats的安装和使用
gitstats 是一款git历史统计工具,可以生成定量的统计数据,并以html图表的形式展示.统计文件包括文件数量.代码量.提交量.作者信息.每天活跃度.每周活跃度.每月活跃度以及提交数排名等等,信 ...
- Spring boot 事务Transactional
开启事务只需要加上注解@Transactional即可 // 默认情况下数据库的事务作用范围是在JapRepository 的crud上 // save 一旦执行成功,就会进行提交 // 开启事务后遇 ...
- CPU突然飙升到300%,Dubbo活动线程数直接飙到1000
转:https://mp.weixin.qq.com/s/-lSiVDfqYrKk_w-xitYBhA 背景:新功能开发测试完成后,准备发布上线,当发布完第三台机器时,监控显示其中一台机器CPU突然飙 ...
- Perl快速查找素数
查找N内的所有素数,首先想到的就是: 对整数N从2开始到sqrt(N),进行整除计算,能整除则计算N+1,然后循环.方法简单,但效率低下.1000,000内的素数个数: #!/usr/bin/perl ...
- taocrypt
taocrypt MySQL Bugs: #25189: mysqld: coding.cpp:243: void TaoCrypt::Base64Decoder::Decode(): Asserti ...
- (转)设置了RemoveIPC=yes 的RHEL7.2 会crash掉Oracle asm 实例和Oracle database实例
设置了RemoveIPC=yes 的RHEL7.2 会crash掉Oracle asm 实例和Oracle database实例,该问题也会在使用Shared Memory Segment (SHM ...