Django自定义用户模型与模块路径配置实战
本文详细讲解在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自定义用户模型及模块路径配置的完整实例代码,感谢大家的学习和对本站的支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













