在 Django 网站中,如果您希望用户创建与其帐户绑定的其他用户,您可以使用 Django 的内置用户认证系统和一些自定义代码来实现这一目标。以下是一些关键步骤:
settings.py
文件中添加以下代码:INSTALLED_APPS = [
...
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
AUTH_USER_MODEL = 'your_app_name.YourCustomUserModel'
在这里,您需要将 your_app_name
替换为您的应用名称,并将 YourCustomUserModel
替换为您的自定义用户模型的名称。
AbstractBaseUser
类。在您的应用的 models.py
文件中添加以下代码:from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
class CustomUserManager(BaseUserManager):
def create_user(self, email, password=None, **extra_fields):
if not email:
raise ValueError('The Email field must be set')
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password=None, **extra_fields):
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
return self.create_user(email, password, **extra_fields)
class CustomUser(AbstractBaseUser):
email = models.EmailField(verbose_name='email', max_length=60, unique=True)
date_joined = models.DateTimeField(verbose_name='date joined', auto_now_add=True)
last_login = models.DateTimeField(verbose_name='last login', auto_now=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
objects = CustomUserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
def __str__(self):
return self.email
def has_perm(self, perm, obj=None):
return self.is_admin
def has_module_perms(self, app_label):
return True
在这里,您需要根据您的需求自定义您的用户模型。例如,您可以添加更多字段,例如 first_name
、last_name
和 username
。
views.py
文件中创建一个视图,该视图允许用户创建新用户。在这个视图中,您可以使用您的自定义用户模型来创建新用户。例如:from django.shortcuts import render
from django.contrib import messages
from django.contrib.auth import authenticate, login
from .models import CustomUser
def register(request):
if request.method == 'POST':
email = request.POST['email']
password = request.POST['password']
confirm_password = request.POST['confirm_password']
if password != confirm_password:
messages.error(request, 'Passwords do not match')
return render(request, 'register.html')
user = CustomUser(email=email)
user.set_password(password)
user.save()
messages.success(request, 'Account created successfully')
return render(request, 'login.html')
return render(request, 'register.html')
在这里,您需要根据您的需求自定义您的注册视图。例如,您可以添加更多字段,例如 first_name
、last_name
和 username
。
urls.py
文件中添加以下代码,以便用户可以访问注册页面:from django.urls import path
from . import views
urlpatterns = [
path('register/', views.register, name='register'),
]
现在,您已经创建了一个允许用户创建与其帐户绑定的其他用户的 Django 网站。用户可以通过访问注册页面来创建新用户,并使用他们的电子邮件地址和密码进行身份验证。
领取专属 10元无门槛券
手把手带您无忧上云