Flask Web框架学习(三、请求与响应)

获取请求参数

from flask import request

  • request中包含了前端发送过来的所有请求数据
  • 就是 Flask 中表示当前请求的 request 对象,request对象中保存了一次HTTP请求的一切信息。
  • request常用属性在这里插入图片描述
  1. 表单格式
@app.route("/", methods=["GET"])
def index():
    # 通过表单获取表单中的数据
    # 通过get方法只能拿到多个同名参数的第一个
    name = request.form.get("name")
    pwd = request.form.get("password")
    # 可以获取全部同名参数
    name_li = request.form.getlist("name")
  1. 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")
  1. 上传文件
  • 已上传的文件存储在内存或是文件系统中一个临时的位置。你可以通过请求对象的 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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值