无法使用自定义超级用户登录 Django 管理员
Cannot login to Django admin with custom superuser
我正在为我的博客网站开发自定义 Author
用户模型。此用户模型中的作者使用外键连接到我的 post 应用程序,这是我的另一个应用程序,并创建作者-post 关系。但是,我什至无法登录到 Django 管理面板,它说我的密码错误,但我确定它是正确的。这是什么原因?
Please enter the correct email adresi and password for a staff account. Note that both fields may be case-sensitive.
我的自定义用户模型代码:
from django.contrib.auth.base_user import BaseUserManager
from django.db import models
from django.utils.text import slugify
from django.utils.translation import gettext_lazy as _
from django.contrib.auth.models import (
AbstractBaseUser,
PermissionsMixin,
)
class CustomAccountManager(BaseUserManager):
def create_superuser(self, email, firstName, lastName, password, **other_fields):
other_fields.setdefault('is_staff', True)
other_fields.setdefault('is_superuser', True)
other_fields.setdefault('is_active', True)
if other_fields.get("is_staff") is not True:
raise ValueError("Buraya erişim izniniz bulunmamaktadır. Lütfen yöneticiyle iletişime geçiniz.")
if other_fields.get("is_superuser") is not True:
raise ValueError("Buraya erişim sadece En üst düzey kullanıcılar içindir. Lütfen yöneticiyle iletişime Geçiniz")
return self.create_user(email, firstName, lastName, password, **other_fields)
def create_user(self, firstName, lastName, email, password, **other_fields):
if not email:
raise ValueError(_("Email Adresinizi Doğrulamalısınız!"))
email = self.normalize_email(email)
user = self.model(email=email, firstName=firstName, lastName=lastName, **other_fields)
user.set_password(password)
user.save()
return user
class Author(AbstractBaseUser, PermissionsMixin):
id = models.AutoField(primary_key=True)
firstName = models.CharField(max_length=100)
email = models.EmailField(_("email adresi"), max_length=100, unique=True)
lastName = models.CharField(max_length=100)
displayName = models.CharField(max_length=300)
gender = models.CharField(max_length=50)
avatar = models.ImageField(upload_to="avatar")
bgImage = models.ImageField(upload_to="background")
slug = models.SlugField(editable=False, unique=True)
desc = models.TextField()
jobName = models.CharField(max_length=50, default="Author Job")
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)
objects = CustomAccountManager()
USERNAME_FIELD = "email"
REQUIRED_FIELDS = ["firstName", "lastName"]
def __str__(self):
return self.displayName
def get_slug(self):
slug = slugify(self.title.replace("ı", "i"))
unique = slug
number = 1
while Author.objects.filter(slug=unique).exists():
unique = "{}-{}" .format(slug, number)
number += 1
return unique
def create_superuser(self, email, firstName, lastName, password, **other_fields):
# ...
return self.create_user(email, firstName, lastName, password, **other_fields)
修复create_user
参数的顺序:
# def create_user(self, firstName, lastName, email, password, **other_fields):
def create_user(self, email, firstName, lastName, password, **other_fields):
我正在为我的博客网站开发自定义 Author
用户模型。此用户模型中的作者使用外键连接到我的 post 应用程序,这是我的另一个应用程序,并创建作者-post 关系。但是,我什至无法登录到 Django 管理面板,它说我的密码错误,但我确定它是正确的。这是什么原因?
Please enter the correct email adresi and password for a staff account. Note that both fields may be case-sensitive.
我的自定义用户模型代码:
from django.contrib.auth.base_user import BaseUserManager
from django.db import models
from django.utils.text import slugify
from django.utils.translation import gettext_lazy as _
from django.contrib.auth.models import (
AbstractBaseUser,
PermissionsMixin,
)
class CustomAccountManager(BaseUserManager):
def create_superuser(self, email, firstName, lastName, password, **other_fields):
other_fields.setdefault('is_staff', True)
other_fields.setdefault('is_superuser', True)
other_fields.setdefault('is_active', True)
if other_fields.get("is_staff") is not True:
raise ValueError("Buraya erişim izniniz bulunmamaktadır. Lütfen yöneticiyle iletişime geçiniz.")
if other_fields.get("is_superuser") is not True:
raise ValueError("Buraya erişim sadece En üst düzey kullanıcılar içindir. Lütfen yöneticiyle iletişime Geçiniz")
return self.create_user(email, firstName, lastName, password, **other_fields)
def create_user(self, firstName, lastName, email, password, **other_fields):
if not email:
raise ValueError(_("Email Adresinizi Doğrulamalısınız!"))
email = self.normalize_email(email)
user = self.model(email=email, firstName=firstName, lastName=lastName, **other_fields)
user.set_password(password)
user.save()
return user
class Author(AbstractBaseUser, PermissionsMixin):
id = models.AutoField(primary_key=True)
firstName = models.CharField(max_length=100)
email = models.EmailField(_("email adresi"), max_length=100, unique=True)
lastName = models.CharField(max_length=100)
displayName = models.CharField(max_length=300)
gender = models.CharField(max_length=50)
avatar = models.ImageField(upload_to="avatar")
bgImage = models.ImageField(upload_to="background")
slug = models.SlugField(editable=False, unique=True)
desc = models.TextField()
jobName = models.CharField(max_length=50, default="Author Job")
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)
objects = CustomAccountManager()
USERNAME_FIELD = "email"
REQUIRED_FIELDS = ["firstName", "lastName"]
def __str__(self):
return self.displayName
def get_slug(self):
slug = slugify(self.title.replace("ı", "i"))
unique = slug
number = 1
while Author.objects.filter(slug=unique).exists():
unique = "{}-{}" .format(slug, number)
number += 1
return unique
def create_superuser(self, email, firstName, lastName, password, **other_fields): # ... return self.create_user(email, firstName, lastName, password, **other_fields)
修复create_user
参数的顺序:
# def create_user(self, firstName, lastName, email, password, **other_fields):
def create_user(self, email, firstName, lastName, password, **other_fields):