我有以下Serializer
來處理用戶:Serializer.is_valid()始終是假
class FriendSerializer(serializers.Serializer):
login = serializers.CharField(max_length=15, required=True)
password = serializers.CharField(max_length=15, required=True)
mail = serializers.CharField(max_length=50, required=True)
目前,我認爲它處理POST請求註冊一個新用戶是一個基於Django的REST教程:
@api_view(['POST'])
def register_new_user(request):
if request.method == 'POST':
print('POST request !')
stream = BytesIO(request.body)
data = JSONParser().parse(stream)
print(data)
serializer = FriendSerializer(data=data)
print(serializer.is_valid())
else:
print('Not a POST request!')
return HttpResponse('Nothing')
因此,爲了模擬一個客戶端與POST請求,我使用下列行:
import requests
import json
json_data = json.dumps({'login': 'mylogin', 'password': 'mypassword', 'mail': 'mymail'})
r = requests.post('http://127.0.0.1:8000/register_new_user', json=json_data)
然而,儘管print(data)
檢索,符合市場預期,
{"login": "mylogin", "mail": "mymail", "password": "mypassword"}
的serializer.is_valid()
總是返回False
。
我是否缺少處理我的請求?
編輯:
我得到serializer.errors
以下信息:
{'non_field_errors': ['Invalid data. Expected a dictionary, but got str.']}