Django自定义用户模型与模块路径配置实战

江屿
江屿
发布时间:2026-10-13 | 4人浏览过
原创

本文详细讲解在Django项目中如何配置子应用模块路径,以及如何继承AbstractUser类自定义用户模型并添加手机号字段。通过修改sys.path和设置AUTH_USER_MODEL,实现更灵活的用户管理,并演示了迁移文件的生成与执行过程。

Django子应用模块路径配置

首先,需要创建一个名为apps的包,用于集中存放项目的各个子应用模块。

接着,在该apps包下创建users子应用,专门负责处理与用户相关的业务逻辑和事务。

为了让Django能够正确识别并导入这些子应用,需要手动追加导包路径。

可以通过在settings文件中执行print(sys.path)来查看当前Python解释器已配置的导包路径列表。


sys.path.insert(0,'/home/python/oldproject/meiduo/meiduo/apps')

然而,硬编码绝对路径的方式较为低级且缺乏灵活性,建议采用更优雅的配置方式。


sys.path.insert(0,os.path.join(BASE_DIR,'apps'))

使用相对路径或动态拼接的方式可以简化导包配置,使项目结构更加清晰易维护。

自定义用户模型与手机号字段扩展

接下来,需要定义自定义的用户模型类,以扩展Django默认提供的用户功能。

Django内置的用户模型类User位于django.contrib.auth.models中,提供了基础的认证功能。


#位置 django.contrib.auth.models.User
#继承自AbstraUser AbstraUser里定义了用户具备的字段 如用户名 密码 邮箱 还封装了校验密码等一系列方法
class User(AbstractUser):
  """
  Users within the Django authentication system are represented by this
  model.

  Username, password and email are required. Other fields are optional.
  """
  class Meta(AbstractUser.Meta):
    swappable = 'AUTH_USER_MODEL'

为了支持手机号登录或验证,需要在apps.users.models模块中为User模型增加一个手机号码字段。


from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
  #自定义用户模型类
  mobile = models.CharField(max_length=11, unique=True, verbose_name='手机号')

  class Meta:
    db_table = 'tb_users' #自定义表名
    verbose_name = '用户' # 在admin站点管理中显示这个表叫什么
    verbose_name_plural = verbose_name

Django默认使用的用户模型配置存储在'django.conf.global_settings'中,通常指向默认的auth.User。


AUTH_USER_MODEL = 'auth.User' #这里还是之前未自定义的用户模型类

为了使用自定义模型,必须在项目的settings.py文件中重新指定AUTH_USER_MODEL参数。


#AUTH_USER_MODEL = '应用名.模型类名'
# 指定本项目用户模型类
AUTH_USER_MODEL = 'users.User'

数据库迁移与生效

完成模型类的定义后,务必执行数据库迁移操作,包括创建迁移文件并应用迁移,以确保数据库表结构同步更新。

在命令行终端中,依次执行makemigrations和migrate命令即可完成迁移流程。


python manage.py makemigrations
python manage.py migrate

以上即为Django自定义用户模型及模块路径配置的完整实例代码,感谢大家的学习和对本站的支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表