web-dev-qa-db-fra.com

TypeError: login () prend 1 argument positionnel mais 2 ont été donnés

j'ai écrit une vue de connexion en utilisant l'authentification intégrée, Django auth.login () donne l'erreur ci-dessus mon code avec le code d'erreur o 500

from rest_framework.response import Response
from rest_framework import status
from rest_framework.decorators import api_view
from Django.contrib.auth.models import User
from Django.contrib.auth import authenticate,logout,login


@api_view(['POST'])
def register(request):
    user=User.objects.create_user(username=request.POST['username'],email=request.POST['email'],password=request.POST['password'])
    return Response({'ok':'True'},status=status.HTTP_201_CREATED)

@api_view(['POST'])
def login(request):
    user=authenticate(
        username=request.POST['username'],
        password=request.POST['password']
    )
    if user is not None:
        login(request,user)
        return Response({'ok':'True'},status=status.HTTP_200_OK)
    else:
        return Response({'ok':'False'},status=status.HTTP_401_UNAUTHORIZED)
23
sabari rangan

Votre vue porte le même nom que la fonction de connexion d'authentification, elle la cache donc. Modifiez le nom de la vue ou importez la fonction sous un nom différent, par exemple from Django.contrib.auth import login as auth_login.

68
Daniel Roseman