轻松获取并验证所有烧瓶输入参数。

Flask-Parameter-Validation的Python项目详细描述


烧瓶参数验证

轻松获取并验证所有烧瓶输入参数。

安装

  • Pip:使用pip install flask_parameter_validation安装。在
  • 手动:
    • git clone https://github.com/Ge0rg3/Flask-Parameter-Validation.git
    • python setup.py install

简单用法

fromflaskimportFlaskfromtypingimportList,Optionalfromflask_parameter_validationimportValidateParameters,Route,Json,Queryapp=Flask(__name__)@app.route("/update/<int:id>",methods=["POST"])@ValidateParameters()defhello(id:int=Route(),username:str=Json(min_length=5,blacklist="<>"),age:int=Json(min_int=18,max_int=99),nicknames:List[str]=Json(),password_expiry:Optional[int]=Json(5),is_admin:bool=Query(False)):return"Hello World!"if__name__=="__main__":app.run()

详细用法

  1. 我们在应该使用这个模块的所有函数上使用ValidateParameters修饰符。在
  2. 参数格式如下: parameter_name: parameter_type = Class() 在本例中,parameter_name将是字段名本身,例如“username”。parameter_type将是预期的python数据类型,例如str、int、List、Union等。最后,Class()是类输入之一,如下所示:

  1. Route()
    这是通过URL传递的数据,例如/users/<int:id>
  2. Form()
    这是普通HTML表单传递的数据,通常是x-www-form-urlencoded内容类型。在
  3. Json()
    这是发送的任何JSON主体——请求必须具有application/JSON内容类型才能读取此内容。在
  4. Query()
    这包括查询参数(也称为GET参数),例如/news/article?id=55
  5. 文件()
    对文件的验证与其他验证不同,但是文件输入仍然可以作为它们的Flask FileStorage对象在这里获得。在

验证

所有参数都可以有默认值,并自动验证。
RouteFormJson和{}具有以下选项:

  • default:any,指定字段的默认值。在
  • min_length:int,指定字符串输入的最小字符长度
  • max_length:int,指定字符串输入的最大字符长度
  • min_int:int,指定int输入的最小数目
  • max_int:int,指定int输入的最大数目
  • whitelist:str,一个包含允许的值字符的字符串
  • blacklist:str,一个包含禁止字符的字符串

File有以下选项:

  • 内容类型:字符串数组,允许的内容类型数组。在
  • 最小长度:文件的最小内容长度
  • max_length:文件的最大内容长度

这些验证器被传递到route函数中的类中,例如:

  • username: str = Json("defaultusername", min_length=5)
  • profile_picture: Any = File(content_types=["image/png", "image/jpeg"])
  • filter: str = Query()

覆盖默认错误

默认情况下,错误消息以JSON响应的形式返回,“error”字段中有详细的错误。但是,可以通过将自定义错误函数传递到ValidateParameters修饰符中来进行编辑。例如:

^{pr2}$

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JList侦听器找不到符号   多点触摸跨平台java应用程序(Windows、Mac和Linux(Ubuntu)(可能是Android))   在UnitTest中找不到java类加载器资源   java当我尝试在Eclipse中运行我的minecraft mod时,我总是遇到这个错误,这是什么意思?   内部有一个同步块的静态方法,在java中阻止整个类?   不支持java操作:具有BillableStatus的费用在采购中应具有AccountBasedExpenseLineDetail行的CustomerRef   java运行时常量池GC集合   java无法解析配置“:app:\u debugApk”的所有依赖项。找不到名为“default”的配置   在GCP计算引擎中托管Neo4j的java   java如何从BroadcastReceiver更新片段选项卡?   线程“main”组织中的java异常。冬眠注释异常:@org。冬眠注释。表引用未知表:ProductForPractice   在Java/Groovy中嵌入处理   java Android REST教程/示例项目   java我可以在同一测试中在一个模拟器上启动应用程序,在另一个模拟器上启动移动浏览器吗?   java如何更改通知横幅的方向?   安卓 Java帮助实现Firebase授权   if else之后的rs.next()中出现java错误?