Ну, я пытаюсь войти с помощью вызова API. Я получил модель под названием Пользователь. Я хочу сделать логин из этой модели, используя адрес электронной почты и пароль. Это моя модель:
class User(models.Model):
name = models.CharField(max_length=30, null=False, blank=False)
surnames = models.CharField(max_length=30, null=False, blank=False)
email = models.EmailField(max_length=60)
password = models.CharField(max_length=100, null=False, blank=False)
country = CountryField()
phonenumber = PhoneNumberField()
postalCode = models.CharField(max_length=5)
def __str__(self):
return self.email
У меня есть этот логин для вызова API Пользователь:
class UserLogin(APIView):
permission_classes = []
def post(self, request, *args, **kwargs):
user = authenticate(email=request.data.get('email'), password=request.data.get('password'))
if user is not None and user.is_active:
login(request, user.email)
return render(request, 'core/core_index.html')
else:
return HttpResponse('Error')
С этим бэкэндом для аутентификации:
from django.contrib.auth.models import User
from apps.core.models import User as UserAPI
class MyBackEnd(object):
def authenticate(self, request, email, password):
"""
:param username: Username of the user
:param password: Password of the user
:return:
"""
#check is user is present in User DB.
existing_user = None
try:
existing_user = User.objects.get(email=email)
return existing_user
except Exception as e:
#Checking the user UserAPI Custom DB.
user_data = UserAPI.objects.get(email=email)
if email == user_data.email:
user = User.objects.create_user(username=user_data.name ,email=email,password=password)
user.save()
return User.objects.get(email=email)
else:
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
Я получил AUTHENTICATION_BACKENDS = ['apps.core.api.backends.MyBackEnd'] установлено на settings.py.
Я много чего перепробовал и все с ошибками, не знаю, что делать, если у кого-то есть решение, пожалуйста.