说明:本文基于 macOS 13(M1 芯片)环境编写,若您使用的是 Windows 系统,部分命令可能略有不同,欢迎根据实际情况灵活调整。
在使用Django中我们的网站如果简单,可以直接只用django自带的内置用户模型,做到登录,注册,退出。但是一开始就做好了扩展用户模型或者说增加用户系统功能的打算,就应该在第一时间替换掉Django自带的用户模型。
可能有人觉得django一下子就拉了,变得不好了,但其实上django早就为此做好了准备,使用django自带中的AbstractUser,就可以轻松解决用户功能难扩展的问题。
其实只要没有向数据库中写入数据,用户模型的更改还是很简单的,大不了从头开始就可以了,但是如果数据很多,其他应用的功能又和用户系统关联,可能就麻烦了,最麻烦的我的觉得是我的亲身感受,在引入第三方认证库的同时,自己有创建了一个用户应用,然后自定义用户--很麻烦。
但是你只要了解了AbstractUser就能轻松扩展用户模型,下面是一个例子:
```python
from django.contrib.auth.models import AbstractUser
from django.db import models
from django.utils.translation import gettext_lazy as _
class CustomUser(AbstractUser):
nickname = models.CharField(_("昵称"), max_length=50, blank=True)
phone = models.CharField(_("手机号"), max_length=20, blank=True)
birthday = models.DateField(_("生日"), null=True, blank=True)
address = models.CharField(_("地址"), max_length=255, blank=True)
picture = models.ImageField(_("头像"), upload_to='images/', blank=True)
class Meta:
verbose_name = _("用户")
verbose_name_plural = _("用户管理")
```
对了记着这一步也很关键:
```python
INSTALLED_APPS = [
...
'accounts',
...
]
AUTH_USER_MODEL = 'accounts.CustomUser'
```
ok,以后想要扩展用户模型的时候直接添加字段就可以了。