在尝试处理以下用例时,我似乎遇到了令人费解的结果:
URL: '^api/event/(?P<pk>[0-9]+)/registration$'
payload: {"registered": "true"} or {"registered": "false"}
我检索对应于给定pk的事件对象,然后根据我想要的那样:
一切正常,直到我想在PUT请求中处理传入的有效负载。我试过像这样创建一个序列化器:
class RegistrationSerializer(serializers.Serializer):
registered = fields.BooleanField()
并从APIView的put方法中调用它:
serializer = RegistrationSerializer(data=request.DATA)
但它不起作用,serializer.data
总是包含`{“注册”:False}
从一个shell我尝试了另一个孤立的测试:
>>> rs = RegistrationSerializer(data={'registered':True})
>>> rs
<app.serializers.RegistrationSerializer object at 0x10a08cc10>
>>> rs.data
{'registered': False}
我做错了什么?处理这个用例的最佳方法是什么?
答案 0 :(得分:1)
在访问rs.is_valid()
之前,您需要先致电rs.data
。
如果你不这样做,框架应该提出异常。