flask 通过 ajax, post 获取来的 json 数据,例如邮箱,手机号码,用户名等数据,如何进行格式验证

2018-02-28 23:08:28 +08:00
 sevenQu

上面只是一个例子,我记得教程里说过,前端传来的数据都是不安全的,需要进行验证

而这个不是表单提交,没有直接的插件类可以使用

如果我来做,就只能自己创建一个验证类,使用正则进行验证,将其导入需要验证的文件使用即可

同时类中的方法没有实例化就使用,是不是需要全部用 @staticmethod 修饰作为静态方法,感觉 python 不需要这样,直接定义类中的方法即可,求指点

写到这里,我觉得肯定有人已经把这个类写好了,求告知

4233 次点击
所在节点    Flask
10 条回复
Eds1995
2018-02-28 23:16:36 +08:00
可以试一下这个库 marshmallow
knightdf
2018-03-01 00:02:00 +08:00
marshmallow +1
DeanThompson
2018-03-01 00:13:22 +08:00
marshmallow 或 jsonschema
mgsparrow
2018-03-01 01:39:49 +08:00
sqlalchemy 可以嗎
lbfeng
2018-03-01 01:45:30 +08:00
同时类中的方法没有实例化就使用,是不是需要全部用 @staticmethod 修饰作为静态方法

ligyxy
2018-03-01 05:57:14 +08:00
huahuajun9527
2018-03-01 10:27:57 +08:00
不用 @staticmethod 可以这样做,把这些验证方法全都写到一个文件里,import 进来,然后 模块名.方法名 就好了。

from jsonschema import validate

schema = {
"type": "object",
"properties": {
"phone_number": {
"type": "string",
"pattern": "^1\d{10}$",
"description": "手机号码"
},
"username": {
"type": "string",
"pattern": "^[\w]{4,20}$",
"description": "用户名"
}
},
"required": ["phone_number", "username"]
}

param = {'phone_number': '12345678910', 'username': '10086'}
try:
validate(param, schema)
except Exception as e:
print(e.message)
zhao6217
2018-03-01 15:43:08 +08:00
直接使用 flask 中自带的 request 不就好了,from flask import request,request.get_json 方法能够帮助将请求体的 json 数据转换为字典,直接使用字典的 get 方法取得数据,再判断不就好了,专门搞个模块出来,感觉没什么用啊
srlp
2018-03-02 13:02:35 +08:00
补充一下,

> 同时类中的方法没有实例化就使用,是不是需要全部用 @staticmethod 修饰作为静态方法,感觉 python 不需要这样,直接定义类中的方法即可,求指点

需要 @ 。

但是!**python 并不是 java**,不需要把所有方法都写到类里面的!

可能更好的方法:把方法写在同一个模块(文件)的类 **外面**,作为一个独立函数即可。
sevenQu
2018-03-03 10:22:46 +08:00
@srlp 嗯,前几天看别人写的代码发现了,有时没必要放在类里面,直接把方法写在模块里就好,真的很赞,谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/433689

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX