Django 项目开始前先自定义 User Model
Django 官方文档的自定义身份认证部分有这样一句话:
If you’re starting a new project, it’s highly recommended to set up a custom user model, even if the default User model is sufficient for you.
如果您正在启动一个新项目,强烈建议设置一个自定义用户模型,即使默认的用户模型对您来说已经足够了。
如果是边开发边看文档,等读到这部分时,黄瓜菜都凉了。
项目文档编写自然有它的逻辑,不在文档最开始的时候提出这个建议也是为了不给新手造成困扰。换位思考,如果自己是初学者,连项目和应用的区别还没弄明白,文档入门一上来就告诉你先创建个自定义的用户应用,然后在模型里面继承某个抽象类定义个自定义用户模型,我一定马上把网页关掉。
新 Django 项目
创建好项目,各种配置先做好,配置自定义户用模型要在执行 ./manage.py migrate
迁移命令之前。
创建 User 应用
$ ./manage.py startapp users
创建自定义用户模型
编辑 users/models.py
,创建自定义 User 类:
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
pass
编辑 users/admin.py
,注册管理类:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User
admin.site.register(User, UserAdmin)
编辑配置文件
base.py
# 添加 users 到应用列表
INSTALLED_APPS = [
...
'users',
]
# 修改系统使用的用户模型
AUTH_USER_MODEL = 'users.User'
执行迁移
创建迁移文件
$ ./manage.py makemigrations
执行迁移
$ ./manage.py migrate
会员讨论区