flask第十五篇——Response
从这一节开始,我就要开始讲关于模板的知识了。先来学习一下Response
的相关知识。
所有返回前台的内容其实都应该是Response
的对象或者其子类,我们看到如果返回的是字符串直接可以写成return u'字符串内容'
的形式,但是其实这个字符串也是经过了Response
包装的:return Response(u'字符串')
我们看一段代码:
# coding: utf-8
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-8
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-8
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'返回元组', 200, {"name": "Warren"}
if __name__ == '__main__':
app.run()
看上面代码的myset
函数,我return
了一个元组(单个值的元组可以不写括号,而且如果你加上括号,pycharm会有黄线提醒你remove redundant parentheless
,意思就是去掉多余的括号)。然后我们到页面访问/set/
这个页面,打开F12就是开发者工具,然后刷新页面:
然后看开发者工具:
这就是一个返回元组的例子了。
明天我们继续Response
的知识。
请关注公众号:自动化测试实战
flask第十五篇——Response的更多相关文章
- Flask最强攻略 - 跟DragonFire学Flask - 第十五篇 Flask-Script
其实本章就是为下一章做的铺垫啦,但是也要认真学习哦 Flask-Script 从字面意思上来看就是 Flask 的脚本 是的,熟悉Django的同学是否还记得Django的启动命令呢? python ...
- flask第十六篇——Response【2】
今天来介绍自定义返回对象: 现在我们假定有一个需求:所有的视图函数都要返回json格式的对象我们先看一下Response的源码: 发现只有一行default_mimetype='text/html', ...
- flask第二十五篇——控制语句
有兴趣的请加船长公众号:自动化测试实战 先和大家强调一个发邮件的问题 # coding: utf-8 import smtplib from email.mime.text import MIMETe ...
- Python之路【第十五篇】:Web框架
Python之路[第十五篇]:Web框架 Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 2 3 4 5 6 ...
- 解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)
解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-sourc ...
- 第十五篇 Integration Services:SSIS参数
本篇文章是Integration Services系列的第十五篇,详细内容请参考原文. 简介在前一篇,我们使用SSDT-BI将第一个SSIS项目My_First_SSIS_Project升级/转换到S ...
- 【译】第十五篇 Integration Services:SSIS参数
本篇文章是Integration Services系列的第十五篇,详细内容请参考原文. 简介在前一篇,我们使用SSDT-BI将第一个SSIS项目My_First_SSIS_Project升级/转换到S ...
- 跟我学SpringCloud | 第十五篇:微服务利剑之APM平台(一)Skywalking
目录 SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking 1. Skywalking概述 2. Skywalking主要功能 3. Skywalking主要 ...
- Egret入门学习日记 --- 第十五篇(书中 6.1~6.9节 内容)
第十五篇(书中 6.1~6.9节 内容) 好的,昨天完成了第五章. 今天来看第六章. 总结重点: 1.如何对组件进行分组? 跟着做: 重点1:如何对组件进行分组? 首先,选中你想要组合的组件. 然后点 ...
随机推荐
- linux ps 命令参数详解
-a 显示所有终端机下执行的进程,除了阶段作业领导者之外. a 显示现行终端机下的所有进程,包括其他用户的进程. -A 显示所有进程. -c 显示CLS和PRI栏位. c 列出进程时,显示每个进程真正 ...
- gcc,gdb,make学习
实例学习gcc+gdb+make程序编译.链接.运行时头文件或动态链接库的查找 分四步: 预处理.编译.汇编.链接4steps:preprocess,compile,assemble,link
- String类的subString(a,b)方法(基于jdk 1.9)
基于上文:http://www.jianshu.com/p/a20ee3bb9c1b public String substring(int beginIndex, int endIndex) { i ...
- SpringBoot下的值注入
在我们实际开发项目中,经常会遇到一些常量的配置,比如url,暂时不会改变的字段参数,这个时候我们最好是不要直接写死在代码里的,因为这样编写的程序,应用扩展性太差了,我们可以直接写在配置文件中然后通过配 ...
- 使用Easy4net编写代码生成器
在项目中经常要手动创建和数据库对应的实体类,如果数据库表比较多或者表字段比较多,那会是一个工作量非常大的事情,所以我根据自己的需求写了一个简单的代码生成工具,工具使用Easy4net框架开发. 下面是 ...
- ansible入门六(roles)
一.什么场景下会用roles? 假如我们现在有3个被管理主机,第一个要配置成httpd,第二个要配置成php服务器,第三个要配置成MySQL服务器.我们如何来定义playbook? 第一个play用到 ...
- Linux下安装Nginx教程
什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...
- T4模板的基本结构
(转自:http://www.cnblogs.com/yank/archive/2012/02/14/2342287.html) T4模板的基本结构 代码块的总体分类,就是两种:文本.程序脚本. 我感 ...
- C++复习2.软件开发知识小节
高质量的软件开发 1.满足正确性,健壮性,可靠性,性能,易用性,清晰性,安全性,兼容性,扩展性,可移植性等等来评价软件的质量. 2.没有错误的程序世间难求,任何一个程序,无论他多么的小,总是存在着错误 ...
- 【zznu-夏季队内积分赛3-J】追忆
题目描述 “别人总说我瓜,其实我一点也不瓜,大多数时候我都机智的一批“现在是阳历2018/8/7,宝儿姐想起自己参加ACM整整1000天了.她想知道她刚入坑是什么时间.那么问题来了,请帮宝儿姐追忆一下 ...