首页 > 解决方案 > django ApiView 登录返回 404

问题描述

我的登录 API 视图有问题。尝试登录时,我得到一个 POST 404,但我知道 url 路径是正确的,因为如果我在视图中放置一个简单的 GET 请求,它会返回数据。我的代码仍有一些粗糙的部分,但我认为这会起作用。

登录.py

from django.contrib.auth import authenticate
from django.shortcuts import get_object_or_404
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from apiV1.v1.accounts.models.user import User
from apiV1.v1.accounts.serializers.user import UserSerializerLogin


# login
class LoginView(APIView):
    authentication_classes = ()
    permission_classes = ()

    @staticmethod
    def post(request):
        user = get_object_or_404(User, email=request.data.get('email'))
        user = authenticate(username=user.email, password=request.data.get('password'))
        if user:
            serializer = UserSerializerLogin(user)
            return Response(serializer.data)
        return Response(status=status.HTTP_400_BAD_REQUEST)

序列化程序.py

class UserSerializerLogin(UserSerializer):
    token = serializers.SerializerMethodField()

    @staticmethod
    def get_token(user):
        """
        Get or create token
        """

        token, created = Token.objects.get_or_create(user=user)
        return token.key

    class Meta:
        model = User
        fields = ('id', 'email', 'first_name', 'last_name', 'profile', 'role', 'token')

邮政

{
    "email": "admin",
    "password": "password"
}

标签: djangodjango-rest-frameworkdjango-views

解决方案


推荐阅读