前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >flask第十五篇——Response

flask第十五篇——Response

作者头像
孟船长
发布2018-05-21 09:55:45
1.2K0
发布2018-05-21 09:55:45
举报

从这一节开始,我就要开始讲关于模板的知识了。先来学习一下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`,就可以成功返回了,去页面,看到:

除了字符串以外,还可以返回元组,但是返回元组是有要求的,元组内容包括三个参数:responsestatus_codeheaders,其中:

  • 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的知识。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自动化测试实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档