没有模型逻辑的视图
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,但从未触发。
如果我在 APIView
的 post()
函数中查看 request.data
的内容,它是容器 django.http.request.QueryDict({u'count': u'', u'csrfmiddlewaretoken': u'...', u'generator': u'b'})
,当我 selected发电机 a 和 b.
我也试过设置 get_serializer
正确,正如 GenericAPIView
在 https://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
.
的输出
我正在尝试在 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,但从未触发。
如果我在 APIView
的 post()
函数中查看 request.data
的内容,它是容器 django.http.request.QueryDict({u'count': u'', u'csrfmiddlewaretoken': u'...', u'generator': u'b'})
,当我 selected发电机 a 和 b.
我也试过设置 get_serializer
正确,正如 GenericAPIView
在 https://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
.