【Django】使用Django构建的Web服务(用户注册)
首先
我在使用Django构建的Web应用程序中实现了用户注册功能。
Django默认提供了用户模型,但这次我们使用了Django-Allauth进行实现。
我将写下实现内容和实现CustomUser的一些建议。
简述
在用户注册的基础上,使用了Allauth。
为了添加CustomUser模型,使用了AbstractUser。
在Django中,要更改用户模型可以继承AbstractUser或AbstractBaseUser之一,但是这次的更改只是添加字段,而且希望尽早完成开发,所以选择了使用AbstractUser。
新增用户应用程序
INSTALLED_APPS = [
(中略 以下追加)
#django-allauth
'allauth',
'allauth.account',
'allauth.socialaccount',
#myapp
'teamup_site',
]
...
AUTH_USER_MODEL = 'teamup_site.CustomUser' # 追加
将allauth应用程序应用于Setting.py文件中的INSTALLED_APP。
在那下面,我们将使用teamup_web应用程序内的CustomUser模型,而不是默认的用户模型。
模特儿
我們將創建一個CustomUser模型。
from django.db import models
from django.contrib.auth.models import AbstractUser,
from django.utils import timezone
from datetime import date
class Gender(models.TextChoices):
MAN = 'Man'
WOMEN = 'Women'
OTHER = 'Other'
class Work(models.TextChoices):
SOFTWARE_ENGINEER = 'Software Engineer'
DESIGNER = 'Designer'
PLANNER = 'Planer'
INFRASTRUCTURE_ENGINNER = 'Infrastructure Engineer'
DATA_ENGINNER = 'Data Engineer'
class CustomUser(AbstractUser, PermissionsMixin):
username = models.CharField(max_length=25)
WORK_CHOICES =[(w.value, w.name) for w in Work]
your_job = models.CharField(max_length=25, choices=WORK_CHOICES, default=Work.SOFTWARE_ENGINEER)
GENDER_CHOICES = [(g.value, g.name) for g in Gender]
your_gender = models.CharField(max_length=25, choices=GENDER_CHOICES, default=Gender.OTHER)
birth_date = models.DateField(blank=True, null=True,)
def __str__(self):
return self.username
如果没有特别需要添加的情况,书写方式是普通的。如果不需要特别添加的话,可以用”pass”来表示没问题。
这次,我们除了用户信息之外,还添加了职业选择和性别选择。两者都使用TextChoices来指定为枚举类型。
即使只需要默认的用户模型,也建议创建CustomUser。
一旦进行迁移,数据库的参考模型将变为默认的用户模型。将其更改为后来添加的CustomUser模型将是非常困难的工作,因此,预先创建CustomUser模型并将参考模型更改为该模型将使未来的更改变得更加简便。
一旦进行迁移,数据库的参考模型将变为默认的用户模型。将其更改为后来添加的CustomUser模型将是非常困难的工作,因此,预先创建CustomUser模型并将参考模型更改为该模型将使未来的更改变得更加简便。
表格
from django.contrib.auth.forms import UserCreationForm
from .models import CustomUser
class SignupForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = CustomUser
fields = ["username", "email"]
在这里,用户注册后,我们将在个人资料页面上创建一个用于填写信息的表单。暂时这样做。
管理员
from django.contrib import admin
from .models import CustomUser
# Register your models here.
admin.site.register(CustomUser)
最后,在管理页面上指定CustomUser来执行CRUD操作。