XData
Github: https://github.com/gaojiuli/xdata
一款非常实用的数据验证工具, 通常用于请求数据的验证.
pip install xdata
from xdata import *
class UserSchema(Schema):
telephone = Str(length=11, required=True)
password = Str(min_length=8,max_length=16, required=True)
request_data = {
'telephone':'18180050000',
'password':'idonotknow'
}
schema = UserSchema(request_data)
if schema.valid:
print(schema.validated_data) # {'telephone': '18180050000', 'password': 'idonotknow'}
from xdata import *
class UserSchema(Schema):
telephone = Str(length=11, required=True)
password = Str(min_length=8, max_length=16, required=True)
request_data = {}
schema = UserSchema(request_data)
if not schema.valid:
print(schema.errors) # {'telephone': 'telephone is required', 'password': 'password is required'}
from xdata import *
DataType(required=True,default='11',choices=[])
Str(length=11, max_length=12,min_length=10,regex="")
Int(max=10000,min=12)
Bool(max=10000,min=12)
Decimal(left=5,right=2)
DateTime(max_datetime='2001-01-01 00:00:00', min_datetime='2000-01-01 00:00:00')
Date(max_date='2001-01-01', min_date='2000-01-01')
Time(max_time='06:00:00', min_time='05:00:00')
coverage run --source=xdata -m pytest && coverage report
Github: https://github.com/gaojiuli/xdata
欢迎有兴趣的朋友一起参与进来
1
prasanta OP 没人有兴趣?
|
2
guyskk 2017-03-25 19:28:17 +08:00
这个特别像 https://github.com/schematics/schematics ,有什么不同之处吗?
|
4
laike9m 2017-03-26 10:37:03 +08:00
楼主的项目都是 x 开头啊,之前在 reddit 还看过关于 xweb 的讨论
|
5
prasanta OP @guyskk 我这个只用于数据验证,思路和 schematics 不一样。我是要大家能够很容易实现扩展,很容易自定义自己的数据结构。只做验证一件事的
|
7
EchoUtopia 2017-03-27 16:14:32 +08:00
感觉在 web 上使用场景有限, http 传递过来的参数都是 string ,而楼主的 Int(DataType)判断直接是 isinstance(value, int),这样用户传递过来的参数不可能有 int 值了。 django wsgi 对参数 encode(默认 utf-8)了一下。 django 的 form 的 IntegerField ,做法是 try:int(str(value));except TypeError, ValueError:raise...;
不过这个问题不大!我是把你的这个理解成了 django 的 form ,不知道对不对! |
8
prasanta OP @EchoUtopia xdata 用于请求数据的过滤验证过程, 首先从请求中取得数据(可能是 json,form-data 等)转为 dict 这个过程应该交给 web 框架处理, 此时所有的数据类型就符合请求者的想法了, 然后 xdata 再验证这个 dict 数据是否合法.
|
9
EchoUtopia 2017-03-27 16:34:24 +08:00
@prasanta #8 http 的 query_string 应该都是 string 类型吧
|
10
prasanta OP @EchoUtopia query_string 解析为 dict 时的数据转换应该交给 web 框架来做
|
11
siteshen 2017-03-28 00:50:21 +08:00
|
12
prasanta OP |
13
gwind 2017-03-28 11:22:51 +08:00
wtforms
|
14
prasanta OP @gwind
wtforms 针对的是网页 form 的验证,提供了生成 form 的功能,核心都是为网页服务的.我做这个是想做一个纯粹的数据验证工具. xdata 与 wtforms 比起来,用法要简单一些. |
17
cocoakekeyu 2017-04-04 14:59:04 +08:00
楼主都在做些有趣的东西,先关注下
|