资讯专栏INFORMATION COLUMN

Flask Response

wapeyang / 727人阅读

摘要:只知道对字符串和二进制类型进行处理响应,其他位置类型比如字典都通过函数进行处理,我们定义的如果返回的是类型那么用的函数转换成内容类型。

flask jsonify()函数返回json响应

app = Flask(__name__)
@app.route("/json/")
def index(name):
    return jsonify({"Hello":name})

这时候content-Type=application/json

如果用python的json.dumps()函数

@app.route("/dumps/")
def py(name):
    return json.dumps({"Hello":name})

这时候content-Type=text/html; charset=utf-8。如果选择响应的格式的话,return json.dumps({"Hello":name}),{"Content-Type":"application/json"} 那么content-Type=application/json就会响应json格式

flask Response响应类实际上来自Werzeug中的Response类,它继承的是python的BaseResponse类

我们可以自定义响应

>>> from flask import Flask
>>> app = Flask(__name__)
>>> app.make_response(("

Hello word

",201))

make_response接收一个参数,返回信息和状态码都在一个元组里

Response类定义:

class Response:
    charset = "utf-8"
    default_status = 200
    default_mimetype = "text/html"

    def __init__(self, response=None, status=None, headers=None,
                 mimetype=None, content_type=None, direct_passthrough=False):
        pass

    @classmethod
    def force_type(cls, response, environ=None):
        pass

我们可以自定义Response的子类,对他的行为做出一些改变,Flask类的response_class属性可以改变响应类。

from falsk import FLask, Response

calss MyResponse(Response):
    default_mimetype = "application/xml"  #修改内容类型
  
class Myfalsk(Flask):
    response_class = Myresponse
    
@app.route("/")
def index():
    return """
    
        Yang
    
    """
如果想要其他的内容类型,可以设置Content-Type的值:
return "{"name":"yang"}",{"Content-Type"="application/json"}

重写Response类来过滤Json格式的内容格式:

class Myresponse(Response):
    @classmethod
    def force_type(cls, response, environ=None):
        if isinstance(response, dict):
            response = jsonify(response)
        return super().force(response, environ)

重写forec_type来自定义对未知返回对象的处理。falsk只知道对字符串和二进制类型进行处理响应,其他位置类型比如字典都通过forec_type函数进行处理,我们定义的如果返回的是dict类型那么用flask的jsonify函数转换成json内容类型。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43663.html

相关文章

  • 如何自定义Flask中的响应类(译文)

    摘要:在使用自定义响应类的应用中,和无法知道自定义类的细节,所以它们使用标准响应类来创建响应。有了这个自定义响应类,任何满足格式要求的文档都会自动被标记为内容类型,而其他响应则会继续获得默认的内容类型。 译文链接:编程派 原文链接:Flask Web Development作者的博客 有翻译或理解不对的地方,望大家指正! Flask框架中的响应类,命名很贴切,叫Response。不过...

    ruicbAndroid 评论0 收藏0
  • 一个Flask应用运行过程剖析

    摘要:本文就主要针对一个应用的运行过程进行简要分析,后续文章还会对框架的一些具体问题进行分析。所有的请求处理过程,都会在这个上下文对象中进行。和一些全局变量注意当进入这个上下文对象时,会触发。 相信很多初学Flask的同学(包括我自己),在阅读官方文档或者Flask的学习资料时,对于它的认识是从以下的一段代码开始的: from flask import Flask app = Flask(...

    shmily 评论0 收藏0
  • flask 源码解析:响应

    摘要:我们知道响应分为三个部分状态栏版本状态码和说明头部以冒号隔开的字符对,用于各种控制和协商服务端返回的数据。 这是 flask 源码解析系列文章的其中一篇,本系列所有文章列表: flask 源码解析:简介 flask 源码解析:应用启动流程 flask 源码解析:路由 flask 源码解析:上下文 flask 源码解析:请求 flask 源码解析:响应 response 简介 在 f...

    wslongchen 评论0 收藏0
  • Flask 源码阅读笔记 开篇

    摘要:官方示例第一行类对象,这个无需解释。请求对象的端点请求视图函数的参数通过源码的注释我们可以知道,都只是对库的进行了一层包装并加入一些属性。接下来会有更多关于和相关文章放出来,敬请期待参考文档项目源码版本注释版 Flask 是一个 Python 实现的 Web 开发微框架, 有丰富的生态资源。本文从一段官方的示例代码通过一步步打断点方式解释 Flask 内部的运行机制,在一些关键概念会...

    mikyou 评论0 收藏0
  • flask基础之一

    摘要:最经典的就是了暂时性重定向的状态码是,表示页面暂时性被跳转,比如访问一个需要权限的网址,如果当前用户没有登录,应该重定向到登录页面。作为额外的消息头如果以上的条件都不满足,会假设返回值是一个合法的应用程序,并通过转换成一个请求对象。 flask基础之一 hello world #从flask这个包中导入Flask这个类 #Flask这个类是项目的核心,以后的很多操作都是基于这个类的对象...

    archieyang 评论0 收藏0

发表评论

0条评论

wapeyang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<