django 默认身份验证系统使用自己的身份验证模型,但我已经创建了自己的模型并且我想要,身份验证过程在那里发生
我的模型是:
class User(models.Model):
Nome = models.CharField(max_length=12)
Sobrenome = models.CharField(max_length=12)
Nickname = models.CharField(max_length=21,unique=True)
Email = models.CharField(max_length=40)
Password = models.CharField(max_length=20)
Created_Account_Date = models.DateTimeField(auto_now=False,auto_now_add=True)
Avatar = models.FileField(blank=True)
Number_Following = models.IntegerField(default=0,null=False)
Number_Followers = models.IntegerField(default=0,null=False)
def __str__(self):
return "%s%s" %("@",self.Nickname)
我想用它来制作 auth 进程,而不是 django 的默认
请您参考如下方法:
你绝对应该看看Customizing Authentication在 Django 文档中。
但我会尽力为您分解。您可以跟随并添加您的特定字段:
首先,要创建自定义的User 模型,您需要继承AbstractUser 或AbstractBaseUser。请记住,前者提供的功能比后者更多,而且需要的定制也更少。因此,如果您对 Django 的身份验证系统不太熟悉,那么我建议您继承 AbstractUser 以避免不必要的自定义。
示例:
假设您想扩展标准用户模型并添加一个 EmailField。
#models.py 'users' app
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
email = models.EmailField(unique=True)
现在我们需要让 Django 知道使用我们全新的 CustomUser 模型。 所以在我们的设置文件中,我们可以继续添加:
#settings.py
AUTH_USER_MODEL = 'users.CustomUser'
您可能希望让用户在注册时提供电子邮件地址。为此,您还需要在我们的表单文件中自定义您的 UserCreationForm:
#forms.py
from users.models import CustomUser
from django.contrib.auth.forms import UserCreationForm
class CustomUserCreationForm(UserCreationForm):
email = forms.EmailField(max_length=200)
class Meta:
model = CustomUser
fields = ('username', 'email', 'password1', 'password2')
之后,您需要继续在您的 admin.py 中注册您新创建的 CustomUser 模型。
您很可能需要创建自定义 UserChangeForm。可能还有自定义身份验证后端(例如,如果您希望用户使用电子邮件登录。)但这可能值得单独提出一个新问题。
我强烈建议您阅读 Django 身份验证文档(顶部的链接)。它将为您提供更好的指导,让您根据自己的特定需求进行适当的定制。
或者,如果你现在觉得这太复杂了,你也可以考虑用你需要的自定义字段创建一个单独的模型,然后声明一个 OneToOneField 来链接标准的 User 模型和你的新模型。
祝你好运!
