flask框架从入门到精通之自定义response(代码片段)

小_源 小_源     2022-12-14     514

关键词:

知识点:
1、自定义响应信息
2、返回Json

一、概况

我们都知道当浏览器发起一个请求时,服务器会给一个响应。这个响应包含了返回的内容类型,状态码,服务器版本等一些。如下图:

如果我们不进行修改这里面的响应信息,它会返回默认信息。

二、自定义响应信息

如果我们要自定义响应信息,必须返回的是元组,并且是(response,status,headers)这样的数据结构,至少要有response。
status指定的是HTTP状态码,可以是HTTP中状态码,也可以是自定义的状态码。headers指的是额外的响应头。

from flask import Flask, abort, Response

app = Flask(__name__)


@app.route('/')
def index():
    # return ('自定义响应信息', 502, "name": "xiaosong", "age": 12)

    # 可以不加括号,会自动组装成元组
    # return '自定义响应信息', 502, "name": "xiaosong", "age": 12
    
    # 自定义状态码 可以加上描述信息
    return '自定义响应信息', '520 love error', "name": "xiaosong", "age": 12

if __name__ == '__main__':
    # 0.0.0.0代表任何能代表这台机器的地址都可以访问
    app.run(host='0.0.0.0', port=5000, debug=True)  # 运行程序

我们在浏览器调试一下:

三、make_response

上面返回自定义响应信息,可以用make_response函数。make_response(),相当于Django中的HttpResponse,效果是一样的。

from flask import Flask, abort, Response, make_response

app = Flask(__name__)


@app.route('/')
def index():
    # return ('自定义响应信息', 502, "name": "xiaosong", "age": 12)

    # 可以不加括号,会自动组装成元组
    # return '自定义响应信息', 502, "name": "xiaosong", "age": 12

    # 自定义状态码 可以加上描述信息
    # return '自定义响应信息', '520 love error', "name": "xiaosong", "age": 12
    resp = make_response()
    resp.headers['name'] = 'xiaosong'
    resp.status = '520 love error'
    return resp


if __name__ == '__main__':
    # 0.0.0.0代表任何能代表这台机器的地址都可以访问
    app.run(host='0.0.0.0', port=5000, debug=True)  # 运行程序

四、jsonify

当我们做前后端分离项目,会前端使用ajax请求的时候。我们都会使用JSON作为前后端交互的数据格式,在Django中有个JsonResponse可以返回Json,在Flask中我们用jsonify返回Json。

from flask import Flask, jsonify

app = Flask(__name__)


@app.route('/')
def index():
    data = 
        'name': 'xiaosong',
        'age': 12,
        'gender': '女'
    

    return jsonify(data)


if __name__ == '__main__':
    # 0.0.0.0代表任何能代表这台机器的地址都可以访问
    app.run(host='0.0.0.0', port=5000, debug=True)  # 运行程序

我们在浏览器调试一下:

flask从入门到精通之自定义错误界面

  如果你在浏览器的地址栏中输入了不可用的路由,那么会显示一个状态码为404的错误页面。现在这个错误页面太简陋、平庸,而且样式和使用了Bootstrap的页面不一致。  像常规路由一样,Flask允许程序使用基于模板的自定... 查看详情

flask框架从入门到精通之response(代码片段)

知识点:1、HttpResponse2、Cookie一、概况视图在接收HttpRequest并处理后,必须返回HttpResponse对象。目前视图函数只是返回字符串,之后Flask将字符串转换为响应对象。如果你要显式地转换,你可以使用make_response()函数... 查看详情

flask框架从入门到精通之异常处理(代码片段)

知识点:1、abort()函数2、自定义状态码一、概况我们在写视图函数时,会对前端传递过来的参数进行校验,如果校验不过,会给前端返回一些特定的异常信息。在Flask中,abort()函数可以立即终止视图函数的执... 查看详情

flask从入门到精通之模型定义

  模型这个术语表示程序使用的持久化实体。在ORM中,模型一般是一个Python类,类中的属性对应数据库表中的列。  Flask-SQLAlchemy创建的数据库实例为模型提供了一个基类以及一系列辅助类和辅助函数,可用于定义模型的结... 查看详情

flask框架从入门到精通之模型迁移操作(十六)(代码片段)

知识点:1、模型迁移一、概况在Django框架开发过程中,我们对数据库字段添加或删除,直接修改模型类,然后进行迁移可以了,非常方便。我们也想让Flask框架支持这样的操作,就需要使用Flask-Migrate扩展&#... 查看详情

flask框架从入门到精通之扩展脚本(十五)(代码片段)

一、概况通过使用Flask-Script扩展,我们可以在Flask服务器启动的时候,通过命令行的方式传入参数。而不仅仅通过app.run()方法中传参,比如我们可以通过pythonscript_flask.pyrunserver--hostip地址,告诉服务器在哪个网络接... 查看详情

flask框架从入门到精通之模型查询(十三)(代码片段)

知识点:1、模型查询一、查询其实我们对模型的主要操作就是查询,在Flask-SQLAlchemy中,支持了很多的查询方法。查询操作是通过query对象操作数据。最基本的查询是返回表中所有数据,可以通过过滤器进行更精确... 查看详情

flask框架从入门到精通之session(代码片段)

知识点:1、Session一、概况上一篇,我们说到cookie,除了cookie外还有一个叫session的机制。session也是可以存储一些信息的。对于一些敏感、重要的信息,我们可以存储到session中。谁也不希望自己的余额、银行卡密... 查看详情

flask框架从入门到精通之蓝图(二十四)(代码片段)

知识点:1、蓝图一、概况从前面的知识点能看出来,我们所有的视图函数都写在了一个文件当中,当我们的业务越来复杂的时候。视图函数也会变得越来越多,导致阅读不方便,维护起来困难等难题。比如下... 查看详情

flask框架从入门到精通之模板表单(二十)(代码片段)

知识点:1、WTF使用一、概况当前端使用form表单进行参数传递时候,前端一般都会用js来校验用户输入的参数是否合法。作为后端,不能依赖前端的校验。要在前端校验的基础上在进行一遍校验,防止程序出现异常... 查看详情

flask从入门到精通之flask-bootstrap的使用

... Bootstrap(http://getbootstrap.com/)是Twitter开发的一个开源框架,它提供的用户界面组件可用于创建整洁且具有吸引力的网页,而且这些网页还能兼容所有现代Web浏览器。  要想在程序中集成Bootstrap,显然要对模板做所有必要的... 查看详情

flask框架从入门到精通之模型创建与添加(代码片段)

知识点:1、模型类创建2、模型类关系3、模型数据添加一、概况在Flask-SQLAlchemy中,插入、修改、删除操作,均由数据库会话管理。会话用db.session表示。在准备把数据写入数据库前,要先将数据添加到会话中然后... 查看详情

flask框架从入门到精通之模型关系(十七)(代码片段)

知识点:1、模型关系参照一、概况在数据库中,我们知道数据关系大概有如下几种:一对一、一对多、多对多、自关联等。我们模型已经描述过了一对多,那么下面我们在用模型把其它关系也写出来。关系一对一... 查看详情

flask框架从入门到精通之模型关系(十七)(代码片段)

知识点:1、模型关系参照一、概况在数据库中,我们知道数据关系大概有如下几种:一对一、一对多、多对多、自关联等。我们模型已经描述过了一对多,那么下面我们在用模型把其它关系也写出来。关系一对一... 查看详情

flask框架从入门到精通之模板导入与继承(十八)(代码片段)

知识点:1、模板导入2、模板继承一、概况模板导入就是将另一个模板加载到当前模板中,直接渲染。模板继承和类的继承含义是一样的,主要是为了提高代码重用,减轻开发人员的工作量。典型应用:网站的... 查看详情

flask框架从入门到精通之模板导入与继承(十八)(代码片段)

知识点:1、模板导入2、模板继承一、概况模板导入就是将另一个模板加载到当前模板中,直接渲染。模板继承和类的继承含义是一样的,主要是为了提高代码重用,减轻开发人员的工作量。典型应用:网站的... 查看详情

flask从入门到精通之链接的使用

  在Web开发中,任何具有多个路由的程序都需要可以连接不同页面的链接,例如导航条。  在模板中直接编写简单路由的URL链接不难,但对于包含可变部分的动态路由,在模板中构建正确的URL就很困难。而且,直接编写URL会... 查看详情

flask框架从入门到精通之消息闪现和日志记录(二十一)(代码片段)

知识点:1、闪现2、日志一、概况Flask提供了一个功能方便向前端反馈消息,这个功能叫闪现。闪现的功能是基于session实现,所以我们在使用闪现的时候需要配置secret_key。二、使用我们用一个上传图片的例子来实现闪... 查看详情