繁体   English   中英

Django 休息框架发布请求未检索任何内容

[英]Django rest framework post request not retrieving anything

我正在尝试创建用户创建 api 并发布创建 api,“获取”请求工作正常,但发布请求始终为空。 如果有任何我遗漏或需要添加到视图中的内容,因为 get 请求适用于 post 应用程序。 可能发生的错误是什么。

序列化器.py


from rest_framework import serializers
from .models import User


class RegisterSerializer(serializers.ModelSerializer):
    password2 = serializers.CharField(
        style={'input_type': 'password'}, write_only=True)

    class Meta:
        model = User
        fields = ['username', 'email',
                  'date_of_birth', 'password', 'password2']
        extra_kwargs = {'password': {'write_only': True}}

    def save(self):
        print("saved")
        user = User(email=self.validated_data['email'],
                    username=self.validated_data['username'],
                    date_of_birth=self.validated_data['date_of_birth']
                    )
        password = self.validated_data['password']
        password2 = self.validated_data['password2']
        if password != password2:
            raise serializers.ValidationError(
                {'password': 'Passwords must match.'})
        user.set_password(password)
        user.save()
        return user

下面是views.py

from rest_framework import status
from rest_framework.response import Response
from rest_framework.decorators import api_view
from .models import User
from .serializers import RegisterSerializer
from rest_framework.authtoken.models import Token
from rest_framework.parsers import JSONParser


@api_view(['POST', ])
def registration_view(request):
    if request.method == 'POST':
        serializer = RegisterSerializer(data=request.data)

        data = {}
        if serializer.is_valid():
            print("Hello")
            user = serializer.save()
            data['response'] = 'Successfuly registered a new User'
            data['date_of_birth'] = user.date_of_birth
            data['username'] = user.username
            data['email'] = user.email
            token = Token.objects.get(user=user)
            data['token'] = token
            return Response(data)
        else:
            return Response(serializer.errors)

无论发布请求如何,我总是收到一条错误消息,指出此字段是必需的,

这是错误 - 屏幕截图

谁能帮帮我,谢谢

根据您的屏幕截图,您使用 POST 请求将数据作为查询参数发送。 在 Postman 中,您应该将body部分与例如 form-data 选项一起使用。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM