Flask_RESTful之参数验证


参数验证

  • 参数验证也叫参数解析。
  • Flask-Restful插件提供了类似WTForms来验证提交的数据是否合法的包,叫做reqparse

基本用法

  • 借助于测试工程师 常用的接口测试工具postman来检验。

  • 创建解析器对象
    parser = reqparse.RequestParser()

  • 利用解析器对象添加 需要验证的参数
    parser.add_argument('uname',type=str,help='用户名验证错误!',required=True,trim=True)

  • 利用解析器对象进行验证
    args = parser.parse_args()

    • 若正确,直接返回验证后合格的参数值
    • 若错误,抛异常信息给客户端
  • 添加类视图和url
    api.add_resource(RegisterView,'/register/')


from flask import Flask,url_for,render_template 
from flask_restful import Api,Resource,reqparse,inputs 

app = Flask(__name__) 

api = Api(app) 

class RegisterView(Resource): 
	def post(self): 

		#验证用户名 
		#1.创建解析器对象 
		parser = reqparse.RequestParser() 

		#2.利用解析器对象添加 需要验证的参数 
		parser.add_argument('uname',type=str,help='用户名验证错误!',required=True,trim=True) 

		#3.利用解析器对象进行验证
		args = parser.parse_args() 

		print(args) 
		return {"tips":"注册成功"} 

api.add_resource(RegisterView,'/register/') 

@app.route('/') 
def hello_world(): 
	return render_template('index.html') 

if __name__ == '__main__': 
	app.run(debug=True)
	
  • add_argument方法可以指定这个字段的名字,这个字段的数据类型等,验证错误提示信息等。
  1. default:默认值,如果这个参数没有值,那么将使用这个参数指定的默认值。
  2. required:是否必须。默认为False,如果设置为True,那么这个参数就必须提交上来。
  3. type:这个参数的数据类型,如果指定,那么将使用指定的数据类型来强制转换提交上来的值。
  4. choices:固定选项。提交上来的值只有满足这个选项中的值才符合验证通过,否则验证不通过。
  5. help:错误信息。如果验证失败后,将会使用这个参数指定的值作为错误信息。
  6. trim:是否要去掉前后的空格。
  7. type:
    • 可以使用python自带的一些数据类型(如str或者int),
    • 也可以使用flask_restful.inputs下的一些特定的数据类型来强制转换。
    • 比如一些常用的:
      • url:会判断这个参数的值是否是一个url,如果不是,那么就会抛出异常。
      • regex:正则表达式。
      • date:将这个字符串转换为datetime.date数据类型。如果转换不成功,则会抛出一个异常。

使用参数验证


from flask import Flask,url_for,render_template 
from flask_restful import Api,Resource,reqparse,inputs 

app = Flask(__name__) 

api = Api(app) 

#Flask_RESTful功能之参数验证 
class RegisterView(Resource): 
	def post(self): 
		#用户名 密码 年龄 性别 出生日期 号码 个人主页 
		# 1.创建解析器对象 
		parser = reqparse.RequestParser() 

		#2.利用解析器对象添加 需要验证的参数
		parser.add_argument('uname',type=str,help='用户名验证错误!',required=True,trim=True) 
		parser.add_argument('pwd', type=str, help='密码验证错误!',default="123456") 
		parser.add_argument('age',type=int,help='年龄验证错误!')
		parser.add_argument('gender',type=str,choices=['男','女','双性'])
		parser.add_argument('birthday',type=inputs.date,help='生日字段验证错误!')
		parser.add_argument('phone',type=inputs.regex(r'1[3578]\d{9}'))
		parser.add_argument('phomepage',type=inputs.url,help='个人中心链接验证错误!')

		#3.利用解析器对象进行验证
		args = parser.parse_args() 
		print(args) 
		return {"tips":"注册成功"} 

api.add_resource(RegisterView,'/register/') 

@app.route('/') 
def hello_world(): 
	return render_template('index.html') 

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值