没有模型逻辑的视图

View without model logic

我正在尝试在 Django Rest Framework 中创建一个没有任何数据库附件的视图。该视图应该根据 MultipleChoiceField 和一些 IntegerField 触发 1 个或多个作业。

简单的东西,像这样:

class TestdataSerializer(serializers.Serializer):
    count = serializers.IntegerField(write_only=True)
    generator = serializers.MultipleChoiceField(choices=(['a', 'a'], ['b', 'b']), write_only=True)

class Testdata(APIView):
    serializer_class = TestdataSerializer

    def get(self, request, format=None):
        return Response({'custom-list': 1234})

    def post(self, request, *args, **kwargs):
        return Response({'info': 1234})

这有点管用(它甚至用正确的输入字段填充可浏览的 api),但 MultipleChoiceField 表现不佳。如果我 select 可浏览 api 中的两个值,我只会得到 b (如果我看到 request 包含在 post() 中的内容)。 =25=]

它发送的请求负载是:

------WebKitFormBoundaryy90OuK1LRNu2zfHZ
Content-Disposition: form-data; name="count"


------WebKitFormBoundaryy90OuK1LRNu2zfHZ
Content-Disposition: form-data; name="generator"

a
------WebKitFormBoundaryy90OuK1LRNu2zfHZ
Content-Disposition: form-data; name="generator"

b
------WebKitFormBoundaryy90OuK1LRNu2zfHZ--

基于此,我需要在 DRF 中 MultiPartParser 解析 class。并查看请求,它就在那里..但是如果我尝试将 parser_classes 设置为静态列表(包含 MultiPartParser 它看起来不像是触发了解析器。我什至尝试制作自己的解析器class,但从未触发。

如果我在 APIViewpost() 函数中查看 request.data 的内容,它是容器 django.http.request.QueryDict({u'count': u'', u'csrfmiddlewaretoken': u'...', u'generator': u'b'}),当我 selected发电机 a 和 b.

我也试过设置 get_serializer 正确,正如 GenericAPIViewhttps://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/generics.py 中所做的那样。仍然没有运气。

我是不是忘记了什么?

有效的 post() 如下所示:

def post(self, request, *args, **kwargs):
    serializer = TestdataSerializer(data=request.DATA)
    serializer.is_valid()
    data = serializer.validated_data

否则,和原题一样。我脑残了,正在寻找 request 中的数据,而不是 serializer.

的输出