У меня эта проблема .. функция аутентификации в django не дает мне ничего при передаче имени пользователя и пароля вот моя модель
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
from django.db import models
from django.conf import settings
from django.db.models.signals import post_save
from django.dispatch import receiver
from rest_framework.authtoken.models import Token
class myUserExtensionManager(BaseUserManager):
def create_user(self, username, email, TypeOfUser, password=None):
if not username:
return ValueError("user must have username")
if not email:
return ValueError("user must have an email address")
if not TypeOfUser:
return ValueError("user must have type novice or expert")
user = self.model(
username=username,
email=self.normalize_email(email),
TypeOfUser=TypeOfUser,
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, username, email, password, TypeOfUser):
user = self.create_user(
username=username,
email=self.normalize_email(email),
password=password,
TypeOfUser=TypeOfUser
)
user.is_superuser = True
user.is_admin = True
user.is_staff = True
user.save(using=self._db)
return user
# Create your models here.
class UserExtensionApi(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=20, unique=True)
email = models.EmailField(verbose_name='email', max_length=60, unique=True)
TypeOfUser = models.CharField(max_length=6)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
USERNAME_FIELD = 'username' # for using for login
REQUIRED_FIELDS = ['email', 'TypeOfUser']
Manager = myUserExtensionManager()
objects = myUserExtensionManager()
def __str__(self):
return self.email
def has_perm(self, perm, obj=None): # permation
return self.is_admin
def has_module_prems(self, app_label): # they permation if they admin
return True
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_auth_token(sender, instance=None, created=False, **kwargs):
if created:
Token.objects.create(user=instance)
, и я импортирую get_auth_token из restframework django, и это url файл
from django.contrib import admin
from django.urls import path
from rest_framework.authtoken.views import obtain_auth_token
urlpatterns = [
path('admin/', admin.site.urls),
path('register/', Registration_view, name="register"),
path('signIn/', obtain_auth_token, name="signIn"),
]
наконец, я отправляю имя пользователя и пароль из reactjs, используя ax ios, и я уверен, что данные получены в django, но результат функции аутентификации всегда давай мне Нет, и я не знаю почему