获取请求参数
from flask import request
- request中包含了前端发送过来的所有请求数据
- 就是 Flask 中表示当前请求的 request 对象,request对象中保存了一次HTTP请求的一切信息。
- request常用属性
- 表单格式
@app.route("/", methods=["GET"])
def index():
# 通过表单获取表单中的数据
# 通过get方法只能拿到多个同名参数的第一个
name = request.form.get("name")
pwd = request.form.get("password")
# 可以获取全部同名参数
name_li = request.form.getlist("name")
data、args格式
# 如果请求体是(如json格式),可以通过request.data获取
print("request.data: %s" % request.date)
# request.args 是用来提取url中的参数
# 如 127.0.0.1:5000/index?city=zhangsan&country=china
city = request.args.get("city")
- 上传文件
- 已上传的文件存储在内存或是文件系统中一个
临时
的位置。你可以通过请求对象的 files 属性访问它们。每个上传的文件都会存储在这个字典里。它表现近乎为一个标准的Python file
对象,但它还有一个save()
方法,这个方法允许你把文件保存到服务器的文件系统上。这里是一个用它保存文件的例子:
@app.route("/", methods=["GET"])
def index():
# 上传图片
f = request.files["name"]
# 保存图片
f.save("./name.png")
abort
函数与自定义异常处理
abort
函数
from flask import abort
@app.route("/", methods=["GET"])
def index():
# 使用abort函数可以立即终止视图函数的执行
# 并可以返回给前端特定的信息
# 1 传递状态码信息, 必须是标准的http状态码
abort(404)
- 自定义异常处理
- 捕获错误
errorhandler
装饰器- 注册一个错误处理程序,当程序抛出指定错误状态码的时候,就会调用该装饰器所装饰的方法
- 参数
- code_or_exception – HTTP的错误状态码或指定异常
- 例如统一处理状态码为500的错误给用户友好的提示
- 捕获错误
@app.errorhandler(500)
def internal_server_error(e):
return '服务器搬家了'
- 捕获指定异常
@app.errorhandler(ZeroDivisionError)
def zero_division_error(e):
return '出错'
返回响应数据、自定义状态码和响应头
- 元组方式
- 可以返回一个元组,这样的元组必须是 (response, status, headers) 的形式,且至少包含一个元素。 status 值会覆盖状态代码, headers 可以是一个列表或字典,作为额外的消息标头值。
@app.route("/", methods=["GET"])
def index():
# 1.使用元组,返回自定义的响应信息
# 格式 响应体 状态码 响应头
return "这是首页", 666, [("name", "python"), ("age", 18)]
- 使用make_response
来构造响应信息
# 2.使用make_response来构造响应信息
# 响应体
res = make_response("这是首页")
# 设置响应码
res.status = "888 python"
# 设置响应头
res.headers["name"] = "python"
return res
使用jsonify返回json数据
@app.route("/", methods=["GET"])
def index():
# json 就是字符串
data = {
"name": "python",
"age": 18
}
# jsonify帮助转为json数据,并设置响头Content-Type为application/json
# return jsonify(city="sz", country="china")
return jsonify(data)