首页 > 解决方案 > 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)

标签: pythondjangodjango-rest-framework

解决方案


我认为您的意思是发送单个对象,而不是对象列表。因为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,则意味着数据未与请求一起正确发送。


推荐阅读