【django开发手册】Django 中使用自定义用户模型:一个比自带 User 更强的选择

本文介绍了如何在Django中创建自定义用户模型以实现更复杂的用户管理和权限控制。通过继承AbstractBaseUser和PermissionsMixin,定义自定义管理器和后台管理界面,可以实现对email和is_staff等字段的扩展。文中提供了详细的代码示例和配置步骤,强调了在settings.py中设置AUTH_USER_MODEL的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在这里插入图片描述

Django 是一个非常受欢迎的 Python web 框架,自带的用户认证体系能帮助我们简单地实现注册、登录和权限控制等功能。然而如果需要实现更多的功能,比如自定义用户属性,或者实现不同的用户类型(如普通用户和管理员用户等),使用 Django 自带的 User 模型就可能会变得比较麻烦和受限。这时候,自定义用户模型就成为了一种很好的解决方案。

本篇博客将介绍如何在 Django 中创建自定义用户模型,并给出完整的代码示例。

快速上手

在实现自定义用户模型之前,需要注意以下几个问题:

  • Django 自带的用户管理视图和模板中使用了 User 来创建表,如果需要自定义用户模型,需要在项目的 settings.py 文件中将 AUTH_USER_MODEL 配置项指向到新的模型。这样才能使用我们自定义的用户模型的所有属性和方法。
  • 自定义用户模型需要继承 AbstractBaseUser 和 PermissionsMixin 模型,其中 AbstractBaseUser 模型定义了最基本的用户信息(用户名和密码),PermissionsMixin 模型主要是用来管理权限的。
  • 自定义用户模型需要定义一个 Manager 类,用于管理和操作数据库。在 Manager 类中实现 create_user、create_superuser 等方法,用于创建普通用户和管理员用户。
  • 自定义用户模型需要定义一个 Admin 类,用于管理后台管理页面,包括 fieldsets、list_display、list_filter、search_fields 等相关属性和方法。

下面是一个完整的自定义用户模型的示例代码:

from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin

class MyUserManager(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.m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值