小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值

简介: 小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值

本文内容:


   1. abort函数的使用

   2. 自定义错误处理方法

   3. 设置响应信息的方法

   4. 返回json数据的方法



abort函数的使用


     abort函数是我们又新接触的一个函数,具体有什么作用?简单点说它可以终止视图函数的执行并且还可以返回给前端特定的信息。


下面我将举两个特定的例子


首先第一种:传递状态码信息(必须是http标准状态码)


# -*- coding: utf-8 -*-
from flask import Flask, abort
app = Flask(__name__)
@app.route("/login")
def login():
    # 1. 传递状态码信息(必须是http标准状态码)
    name = ""
    pwd = ""
    # 如果name不等于123 pwd不等于1234 ,我们就返回404状态码
    if name != "123" and pwd != "1234":
        abort(404)
    return "login success"
if __name__ == '__main__':
    app.run(debug=True)


我们运行一下:


image.png


可以看到返回为404的结果页面


除了返回状态码外,abort函数还能传递响应体信息:


# -*- coding: utf-8 -*-
from flask import Flask, abort, Response
app = Flask(__name__)
@app.route("/login")
def login():
    # 2. 传递响应体信息
    name = ""
    pwd = ""
    if name != "123" and pwd != "1234":
        resp = Response("login failed")
        abort(resp)
    return "login success"
if __name__ == '__main__':
    app.run(debug=True)


我运行之后看结果:


image.png


返回了我们想要的结果。其实这里我们可以直接使用return来返回结果,不需要通过Response对象来返回,所以这种返回方式我们并不经常使用。



自定义错误处理方法



我们上面通过abort返回的状态码404,所返回的页面都是固定的404页面,有时我们需要去自己定义返回的页面信息,我们该如何去做?


# -*- coding: utf-8 -*-
from flask import Flask, abort, Response
app = Flask(__name__)
@app.errorhandler(404)
def handle_404_error(err):
    '''自定义的处理错误方法'''
    # 这个返回值会是用户在前端中所看到的结果
    return u"很抱歉,出现了404错误  错误信息: %s" % err
if __name__ == '__main__':
    app.run(debug=True)


大家可以看到上面的handle_404_error函数,我们首先通过修饰器app.errorhandler(404)绑定了404的状态码,之后我们可以在这个函数中定义自己想要返回的页面信息。


运行结果:


image.png


设置响应信息的方法



设置响应信息的方法有两种,我们先来讲讲第一种,通过元组的形式,返回自定义的响应信息。



@app.route("/index")def index():    # 1. 通过元组来自定义返回响应信息    return ("index page", 400, [("itcast","python"), ("City", "hn")])


image.png


大家可以看到我们成功的返回了我们自定义的响应信息,当然除了这种方式,我们还可以将响应头以字典的形式来返回:



@app.route("/index")def index():    # 1. 通过元组来自定义返回响应信息    return ("index page", 400, {"itcast":"python","City":"hn"})


其返回结果与上图一致。


除了一些规定的状态码,我们也可以返回自定义的状态码:



@app.route("/index")def index():    # 1. 通过元组来自定义返回响应信息    # return ("index page", 400, [("itcast","python"), ("City", "hn")])    return ("index page", 666, {"itcast":"python","City":"hn"})


image.png


除了上面的方法去设置响应信息,我们还可以通过make_response函数来进行返回:


# -*- coding: utf-8 -*-
from flask import Flask, make_response
app = Flask(__name__)
@app.route("/index")
def index():
    resp = make_response("index page")
    resp.status = "666"
    resp.headers["city"] = "hn"
    return resp
if __name__ == '__main__':
    app.run(debug=True)


其效果与通过元组设置相同




返回json数据的方法


在Flask中,我们如何返回json数据呢?在Flask中给我们提供了一个函数-jsonify,如何使用?


# -*- coding: utf-8 -*-
from flask import Flask, jsonify
import json
app = Flask(__name__)
@app.route("/index")
def index():
    data = {
        "name":"javaandpython",
        "age":20
    }
    return jsonify(data)
if __name__ == '__main__':
    app.run(debug=True)


jsonify不仅可以帮我们把字典转为json格式,还能帮我们把响应头中的Content-Type设置为application/json。


我们除了把字典形式放入jsonify当中,还可以直接把数据传到jsonify函数当中:


@app.route("/index")
def index():
    return jsonify(name="javaandpython", age=20)
相关文章
|
6月前
|
Python
Flask里面的默认转换器和自定义转换器
Flask里面的默认转换器和自定义转换器
39 0
|
5月前
|
Python
Flask三种添加路由的方法
Flask 是一个流行的 Python Web 框架,它提供了多种方法来添加路由。路由是将 URL 映射到特定函数的过程,它是构建 Web 应用程序的基础。本文将介绍 Flask 中几种常用的路由添加方法,并附带代码示例。
62 3
|
5月前
|
Python
Flask三种文件下载方法
Flask 是一个流行的 Python Web 框架,它提供了多种方法来实现文件下载。在本文中,我们将介绍三种不同的方法,以便你能够选择最适合你应用程序的方法。
318 2
|
17天前
|
安全 Python
Flask过滤器与自定义过滤器的用法
Flask过滤器与自定义过滤器的用法
14 4
|
12天前
|
JSON 中间件 数据格式
五、Flask的请求和响应方法与常用技巧
五、Flask的请求和响应方法与常用技巧
35 0
|
12天前
|
缓存 JSON 关系型数据库
四、Flask 视图使用方法详细概述
四、Flask 视图使用方法详细概述
9 0
|
5月前
|
前端开发 文件存储 Python
【已解决】Flask当中render_template函数使用过程当中css文件无法正常渲染
【已解决】Flask当中render_template函数使用过程当中css文件无法正常渲染
160 1
|
6月前
|
网络架构 Python
在Flask中,如何定义路由并处理HTTP请求的不同方法(GET、POST等)?
【4月更文挑战第25天】在Flask中,使用`@app.route()`装饰器定义路由,如`/hello`,处理GET请求返回'Hello, World!'。通过添加`methods`参数,可处理不同HTTP方法,如POST请求。单一函数可处理多种方法,通过检查`request.method`区分。动态路由使用 `<variable_name>` 传递URL变量到视图函数。这些基础构成处理HTTP请求的Flask应用。
94 1
|
6月前
|
JSON 数据处理 数据库
Flask视图函数与响应处理的艺术
【4月更文挑战第15天】本文探讨了Flask框架中视图函数和响应处理的原理与实践。视图函数通过`@app.route()`装饰器与URL关联,处理用户请求并返回响应。示例展示了如何从URL或请求对象获取参数,以及执行不同操作后返回响应。Flask支持字符串、元组和响应对象等多种响应类型。最佳实践包括保持视图函数简洁、使用模板引擎、处理异常和设置正确状态码。掌握这些技能能提升Web应用的用户体验和开发效率。
|
6月前
|
网络架构 Python
Flask路由与视图:构建你的第一个Web应用
【4月更文挑战第15天】Flask是Python的Web框架,其核心是路由和视图。路由通过`@app.route()`装饰器定义,将URL映射到视图函数。视图函数处理请求并返回响应。动态路由允许URL包含可变部分,如`<username>`,将参数传递给函数。本文通过示例展示了如何创建显示待办事项列表的Web应用,包括定义路由、视图、使用模板以及运行应用。这为基础的Flask应用开发提供了基础。