Django json 请求参数提交转实体
Posted 在奋斗的大道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django json 请求参数提交转实体相关的知识,希望对你有一定的参考价值。
业务场景:在实际开发中,很多前端同事使用From 表单对象进行数据提交,他们更喜欢使用request body 提交json 格式数据。针对上述情况,今天简单梳理如何处理这一类问题。
解决思路:request body 提交json > json 格式字符串 > dict 对象 >目标实体对象
开始本章讲解之前,先补充下Python 关于json 转换相关核心知识点:
使用 JSON 函数需要导入 json 库:import json。
函数 | 描述 |
---|---|
json.dumps | 将 Python 对象编码成 JSON 字符串 |
json.loads | 将已编码的 JSON 字符串解码为 Python 对象 |
python 原始类型向 json 类型的转化对照表:
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
json 类型转换到 python 的类型对照表:
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number (real) | float |
true | True |
false | False |
null | None |
正式开始本章相关功能代码实现:
1、在userSystem 应用中,新增tool.py 工具模块:主要实现dict 转实体对象。相关功能代码如下:
# dict 转 实体对象
class objDictTool:
@staticmethod
def to_obj(obj: object, **data):
obj.__dict__.update(data)
2、在views.py 文件中依赖tool.py 工具模块
from userSystem.tool import objDictTool
在控制层方法(insertJson)中,使用objDictTool 类,相关注意事项,已经标注在源码中。
# json 数据提交,并转换为实体,执行入库操作
def insertJSON(request):
json_str = request.body
json_str = json_str.decode() # python3.6及以上不用这一句代码
dict_data = json.loads(json_str) # loads把str转换为dict,dumps把dict转换为str
item = Book()
objDictTool.to_obj(item, **dict_data)
print("名称: {}, 价格: {}, 作者: {}".format(item.name, item.price, item.author))
# 执行数据库插入
item.save()
return response_success(message="数据入库成功")
3、postman 模拟request body 提交截图如下:
4、mysql8 数据库展示:
以上是关于Django json 请求参数提交转实体的主要内容,如果未能解决你的问题,请参考以下文章
python测试开发django-131.jQuery中$.ajax()方法POST提交contentType:“application/json“类型数据
我要给发送请求后台传递参数如图所示,json数组中的对象后台有对应实体类,后台使用springboot如何接收?