校验类文件
from wtforms import Form,StringField,IntegerField
from wtforms.validators import Length,NumberRange,DataRequired
#类继承From类
class SeachForm(Form):
#校验文本类型q,Length()校验他的长度,
default表示不传的时候默认为123 ,这里的不传是 url里直接不传这个 参数
DataRequired()校验q 不为空
q=StringField(validators=[DataRequired(),Length(min=1,max=30)],default="123")
#校验正整数page,校验他的区间范围,default不传的时候默认为123
page=IntegerField(validators=[NumberRange(min=1,max=99)],default=1)
调用校验的方法文件
#coding=utf-8
from flask import Flask,make_response,jsonify
from flask import request
import sys
sys.path.append("/Users/lucax/Desktop/test实验室/falsk/鱼书项目/")
import helper
from yushu_book import YuShuBook
from flask import Blueprint
import json
from app.web import web
from app.froms.book import SeachForm
@web.route("/book/search")
def search():
#获取url提交的参数传入校验类
form=SeachForm(request.args)
#validate判断是否执行了验证 符合验证要求返回 True
if form.validate():
#获取校验好的请求参数
q=form.q.data
page=form.page.data
#判断q是isbn还是关键字 create_app
is_isbn_or_key=helper.is_isbn_or_key(q)
if is_isbn_or_key =="isbn":
result=YuShuBook.search_by_isbn(q)
else:
result=YuShuBook.search_by_keyword(q)
return jsonify(result)
#请求参数不符合规则没有校验通过
else:
#return jsonify({"msg":"参数错误"})
#也可以使用form.errors,把校验不通过的原因返回到前端
return jsonify(form.errors)
https://dormousehole.readthedocs.io/en/latest/patterns/wtforms.html