python - Django rest 框架 - 在 post() 中解析键值对
问题描述
当用户输入 POST API 数据时,他们将输入 A 和 B 键值对。我想修改 post() 以满足我的需要。当用户单击提交或发布 API 数据时,我想解析以下内容。
无论如何要在api视图返回之前解析这些字段(或者当用户点击提交时)?
这是用户尝试使用 POST API 发布的内容。
[
{
"A": "1234",
"B": "12345",
},
]
我做了什么:
视图.py
class MyModelList(generics.ListCreateAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModeSerializer
permission_classes = (permissions.IsAuthenticated,)
def post(self, request, *args, **kwargs):
##parse A values from key value pair so that value == 1234
##parse B values from key value pair so that value == 12345
return self.create(request, *args, **kwargs)
模型.py
class Models(models.Model):
A = models.CharField(max_length=255, null=False)
B = models.CharField(max_length=255, null=False)
解决方案
我认为您的意思是发送单个对象,而不是对象列表。因为ListCreateAPIView
'screate
函数将只在您的模型中创建一个对象。
因此,如果用户发送带有以下数据的 POST 请求:
{
"A": "1234",
"B": "12345",
}
您可以从request.data
字典中访问它。
def post(self, request, *args, **kwargs):
A = request.data.get('A', None)
B = request.data.get('B', None)
return self.create(request, *args, **kwargs)
如果 A 或 B 为 None,则意味着数据未与请求一起正确发送。
推荐阅读
- mdx - ISLEAF 和 IIF MDX 到 DAX
- mysql - 连接两个表时的MySql连接问题
- docker - Helm Install 可以从 dockerfile 创建容器吗?
- java - 使用 Thymeleaf 实现 JPA 验证消息国际化
- php - 'ImagickException'、'NoDecodeDelegateForThisImageFormat `TMP'@error/constitute.c/ReadImage/501'
- java - Spring Boot & Hibernate - x 实例的标识符已更改为 null
- r - 如何获得充满随机数的矩阵以排除负数?
- laravel - 从 js 发布时 Laravel api CORS 错误
- windows-10 - “运行|调试”按钮未出现在 Visual Studio Code Java 程序上
- wordpress - Woocommerce Add_Rewrite_Rule 不适用于商店页面