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

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第三方库


热门话题
Grails2.1.0/Java7在Windows8.1上从何处获取当前用户名?   JavaSpringJMSActiveMQ   java异常处理,捕获导致while循环停止   sql server 2008将日期时间解析为JAVA日期   java是第一个servlet,但无法打开它   如何在Java中使用XML bean创建典型的XML头?   java将iOs应用程序转换为Android   java将jsp页面内容读取到其他jsp页面中的html   客户端计算机中小型数据库应用程序的java实现   java同步和ServletContextListener   安卓 Java将所有转义字符替换为双转义   当我在布局单元中实现ScrollView时,java GridView的setOnItemLongClickListener不起作用(使用适配器)   禁用Java web服务端点Wsdl   java如何编写一个程序来反转用户输入的数字