wtforms第三方校验库

校验类文件

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

posted @ 2020-04-06 15:52  凯宾斯基  阅读(289)  评论(0)    收藏  举报