Django rest framework &引用;详情:&引用;方法\";获取\";不允许。”;

Django rest framework &引用;详情:&引用;方法\";获取\";不允许。”;,django-rest-framework,Django Rest Framework,我正在创建一个Django rest认证API。但是,每次我尝试创建用户时,都会出现此错误。我在这里尝试了几种解决方案,但都没有成功 不允许使用HTTP 405方法 允许:POST,选项 内容类型:application/json 更改:接受 { “详细信息”:“方法”GET“不允许” } 为什么??我应该做些什么改变吗 这是我的序列化程序。py from rest_framework import serializers from .models import CustomUser clas

我正在创建一个Django rest认证API。但是,每次我尝试创建用户时,都会出现此错误。我在这里尝试了几种解决方案,但都没有成功

不允许使用HTTP 405方法 允许:POST,选项 内容类型:application/json 更改:接受

{ “详细信息”:“方法”GET“不允许” }

为什么??我应该做些什么改变吗

这是我的序列化程序。py

from rest_framework import serializers
from .models import CustomUser

class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
    @classmethod
    def get_token(cls, user):
        token = super(MyTokenObtainPairSerializer, cls).get_token(user)
        
        token['fav_color'] = user.fav_color
        return token

class CustomUserSerializer(serializers.ModelSerializer):
    email = serializers.EmailField(required=True)
    username = serializers.CharField()
    password = serializers.CharField(min_length = 8, write_only= True)

    class Meta:
        model = CustomUser
        fields = ('email', 'username', 'password')
        extra_kwargs = {'password': {'write_only': True}}

        def create(self, validated_data):
            password = validated_data.pop('password', None)
            instance = self.Meta.model(**validated_data)
            
            if password is not None:
                instance.set_password(password)
            instance.save()
            return instance
from rest_framework_simplejwt.views import TokenObtainPairView
from rest_framework.views import APIView
from rest_framework import permissions
from rest_framework.response import Response
from .serializers import TokenObtainPairSerializer

from .serializers import CustomUserSerializer, MyTokenObtainPairSerializer
# Create your views here.

class ObtainTokenPairWithColorView(TokenObtainPairView):
    permission_classes = (permissions.AllowAny,)
    serializer_class = TokenObtainPairSerializer
    
class CustomUserCreate(APIView):
    permission_classes = (permissions.AllowAny,)

    def post(self, render, format = 'json'):
        serializer = CustomUserSerializer(data= request.data)
        if serializer.is_valid:
            user = serializer.save()
            if user:
                json = serializer.data
                return Response(status=status.HTTP_201_CREATED)
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

class HelloWorld(APIView):
    def get(self, request):
        return Response(data={"hello":"world"}, status=status.HTTP_200_OK)
以下是我的观点。py

from rest_framework import serializers
from .models import CustomUser

class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
    @classmethod
    def get_token(cls, user):
        token = super(MyTokenObtainPairSerializer, cls).get_token(user)
        
        token['fav_color'] = user.fav_color
        return token

class CustomUserSerializer(serializers.ModelSerializer):
    email = serializers.EmailField(required=True)
    username = serializers.CharField()
    password = serializers.CharField(min_length = 8, write_only= True)

    class Meta:
        model = CustomUser
        fields = ('email', 'username', 'password')
        extra_kwargs = {'password': {'write_only': True}}

        def create(self, validated_data):
            password = validated_data.pop('password', None)
            instance = self.Meta.model(**validated_data)
            
            if password is not None:
                instance.set_password(password)
            instance.save()
            return instance
from rest_framework_simplejwt.views import TokenObtainPairView
from rest_framework.views import APIView
from rest_framework import permissions
from rest_framework.response import Response
from .serializers import TokenObtainPairSerializer

from .serializers import CustomUserSerializer, MyTokenObtainPairSerializer
# Create your views here.

class ObtainTokenPairWithColorView(TokenObtainPairView):
    permission_classes = (permissions.AllowAny,)
    serializer_class = TokenObtainPairSerializer
    
class CustomUserCreate(APIView):
    permission_classes = (permissions.AllowAny,)

    def post(self, render, format = 'json'):
        serializer = CustomUserSerializer(data= request.data)
        if serializer.is_valid:
            user = serializer.save()
            if user:
                json = serializer.data
                return Response(status=status.HTTP_201_CREATED)
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

class HelloWorld(APIView):
    def get(self, request):
        return Response(data={"hello":"world"}, status=status.HTTP_200_OK)


替换上述代码这将对您有效

为什么在CustomUserSerializer中的元类中创建def。?粘贴时是打字错误还是实际代码是这样的?无论如何,错误可能是因为您在django界面中选择了GET,它应该是POST