django - 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"
}