Flask框架之Flask_RESTful功能之参数验证

参数验证

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

基本用法

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


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方法

  • 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)

发布了354 篇原创文章 · 获赞 4 · 访问量 7810

猜你喜欢

转载自blog.csdn.net/weixin_44733660/article/details/103996953