Django/Python 验证 JSON

4 投票
3 回答
6188 浏览
提问于 2025-04-17 10:54

在Django/Python中,验证JSON数据的最佳方法是什么?

是不是最好创建一些像Django的FormMixin类那样的类,来验证传入的数据或参数呢?

有没有什么好的方法可以做到这一点,避免重复代码?有没有现成的应用可以利用?

我想接收JSON数据,并根据这些数据对我的模型实例进行一些操作或更新。我要接收的数据不是用户生成的——也就是说,它们是一些ID和标志(没有文本),所以我不想使用表单。

3 个回答

1

我推荐一个叫做DictShield的Python库,地址在这里:https://github.com/j2labs/dictshield

DictShield是一个与数据库无关的建模系统。它提供了一种简单的方法来建模、验证和重塑数据。

这里还有一个关于如何进行JSON验证的示例:

验证用户输入

假设我们从用户那里得到了这个JSON字符串。

{"bio": "Python, Erlang 和吉他!", "secret": "e8b5d682452313a6142c10b045a9a135", "name": "J2D2"}

我们可能会写一些服务器代码,看起来像这样:

json_string = request.get_arg('data')
user_input = json.loads(json_string)
user.validate(**user_input)
4

validictory 是一个用来验证 JSON 数据是否符合 JSON 模式的工具。它能正常工作。当然,现在你需要用 JSON 来定义你的模式,这可能对你想做的事情来说有点复杂,但它在某些情况下还是很有用的。

7

我只是从json数据中创建了一个模型对象,然后在这个模型上调用了full_clean()方法来进行验证:https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.full_clean

m = myModel(**jsondata)
m.full_clean()

撰写回答