Flask 框架的学习

这篇博客主要介绍了Flask框架的基础知识,包括如何创建并初始化应用,以及路由分发和获取请求参数的方法。在路由分发部分,详细讲解了原生API和使用flask_restful库的不同方式,对比了它们的使用体验。
摘要由CSDN通过智能技术生成

一:前言

前端时间学习了下Flask,准备在这里记录一下Flask的基础入门。

二:内容

2.1 创建并初始化

首先先安装

pip install flask flask_restful

之后创建一个hello.py

# 导入Flask类
from flask import Flask

#Flask类接收一个参数__name__
app = Flask(__name__)


# 装饰器的作用是将路由映射到视图函数index
@app.route('/')
def index():
return 'Hello World'


# Flask应用程序实例的run方法启动WEB服务器
if __name__ == '__main__':
app.run(debug = True)

效果图:

2.2 路由分发并获取请求

1.使用原生api给路由传参
  1. 将url中的参数提取出来
@app.route('/user/<int:id>')
def hello(id):
return 'hello %d' % id

  1. 使用的是Http请求(get,post,put, delete)
# 引入request
from flask import request

@app.route('/http-method-test/', methods=['GET', 'POST', 'PUT', 'PATCH', 'DELETE'])
def http_method_example():
if request.method == 'GET':
return 'Send request with `GET` method'
elif request.method == 'POST':
return 'Send request with `POST` method'

获取请求数据

request.form.get(“key”, type=str, default=None) 获取表单数据

request.args.get(“key”) 获取get请求参数

request.values.get(“key”) 获取所有参数

下面给出例子:

  1. get请求
@app.route('/get_test', methods=['GET'])
def get_test():
if request.method == 'GET':
return request.args.get("data")
return "I am a boy"

  1. 同理可以获得post请求

因此使用request.values.get("key")最方便

2.使用flask_restful

原生和拓展的比对

原生:

拓展:

看着第二种舒服不是吗,并且满足API的Restful规则

使用:

# 首先引入
import flask_restful
from flask import Flask, request
from flask_restful import reqparse, Resource, Api

# 创建一个实例对象
app = Flask(__name__)
api = Api(app)


# 该类继承自 Resource 类
class Hello(Resource):
# 假如这个使用的是get方法就会进入这个视图函数里面
def get(self):
mydict = {'message': "Hello"}
return mydict, 200


# 将Hello 这个资源类分配路由
api.add_resource(Hello, '/')

if __name__ == '__main__':
app.run(port=4000, debug=True)

  1. 使用flask_restful 获取相应值

法一:使用原生的request.values.get()方法获取得到值。

法二:使用reqparse 来请求解析数据

from flask import Flask, request
from flask_restful import reqparse, Resource, Api

# 创建一个实例对象
app = Flask(__name__)
api = Api(app)
# 使用捆绑错误选项调用RequestParser, 让错误可以一次全部输出
parser = reqparse.RequestParser(bundle_errors=True)

# 添加请求参数验证, help为类型检查错误时出现的东西
parser.add_argument("number", type=int, help='number should be int')
parser.add_argument("name", type=str)


# 该类继承自 Resource 类
class Hello(Resource):
# 假如这个使用的是get方法就会进入这个视图函数里面
def get(self):
# 取出请求中所有的数据
args = parser.parse_args()
# 使用args[] 方法可以取出数据
return {'number': args['number'], 'name': args['name']}, 200


# 将Hello 这个资源类分配路由
api.add_resource(Hello, '/')

if __name__ == '__main__':
app.run(port=4000, debug=True)

不符合验证规则的请求

符合验证规则的请求

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值