Django博客系统注册(定义用户模型类)

news/2024/7/5 5:31:02

1. Django默认用户认证系统

  • Django自带用户认证系统
    • 它处理用户账号、组、权限以及基于cookie的用户会话。
  • Django认证系统位置
    • django.contrib.auth包含认证框架的核心和默认的模型。
  • Django认证系统同时处理认证和授权
    • 认证:验证一个用户是否它声称的那个人,可用于账号登录。
    • 授权:授权决定一个通过了认证的用户被允许做什么。
  • Django认证系统包含的内容
    • 用户:用户模型类、用户认证。
    • 权限:标识一个用户是否可以做一个特定的任务,MIS系统常用到。
    • 组:对多个具有相同权限的用户进行统一管理,MIS系统常用到。
    • 密码:一个可配置的密码哈希系统,设置密码、密码校验。

2. Django默认用户模型类

  • Django认证系统中提供了用户模型类User保存用户的数据。
    • User对象是认证系统的核心。
  • Django认证系统用户模型类位置

    • django.contrib.auth.models.User

  • 父类AbstractUser介绍

    • User对象基本属性
      • 创建用户必选:username、password
      • 创建用户可选:email、first_name、last_name、last_login、date_joined、is_active 、is_staff、is_superuse
      • 判断用户是否通过认证:is_authenticated
      • USERNAME_FIELD:可以修改用户名认证字段
    • 创建用户的方法

      user = User.objects.create_user(username, password, **extra_fields)
      
    • 用户认证的方法

      from django.contrib.auth import authenticate
      user = authenticate(username=username, password=password, **kwargs)
      
    • 处理密码的方法

      • 设置密码:set_password(raw_password)
      • 校验密码:check_password(raw_password)

3. 自定义用户模型类

思考:为什么要自定义用户模型类?

  • 观察注册界面会发现,个人博客注册页面中必须有手机号,而且在登录页面中也使用手机号进行认证。此外个人中心页面中有个人头像和个人简介字段。
  • 但是Django默认用户模型类中没有这些字段,所以要自定义用户模型类。

如何自定义用户模型类?

  • 继承自AbstractUser(可通过阅读Django默认用户模型类的源码得知) 。
  • 新增手机号字段,头像字段和简介字段。
from django.db import models
from django.contrib.auth.models import AbstractUser# 用户信息
class User(AbstractUser):# 电话号码字段# unique 为唯一性字段mobile = models.CharField(max_length=20, unique=True,blank=True)# 头像# upload_to为保存到响应的子目录中avatar = models.ImageField(upload_to='avatar/%Y%m%d/', blank=True)# 个人简介user_desc = models.TextField(max_length=500, blank=True)# 修改认证的字段USERNAME_FIELD = 'mobile'#创建超级管理员的需要必须输入的字段REQUIRED_FIELDS = ['username','email']# 内部类 class Meta 用于给 model 定义元数据class Meta:db_table='tb_user'              #修改默认的表名verbose_name='用户信息'         # Admin后台显示verbose_name_plural=verbose_name # Admin后台显示def __str__(self):return self.mobile

4. 指定用户模型类

文档

思考:为什么Django默认用户模型类是User?

  • 阅读源代码:'django.conf.global_settings’

    AUTH_USER_MODEL = 'auth.User'
    

结论:

  • Django用户模型类是通过全局配置项AUTH_USER_MODEL决定的

配置规则:

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

5. 迁移用户模型类

1.创建迁移文件

  • python manage.py makemigrations

2.执行迁移文件

  • python manage.py migrate

 查看数据库的变化:

迁移之前:

 迁移之后


http://lihuaxi.xjx100.cn/news/262176.html

相关文章

2015大型互联网公司校招都开始了,薪资你准备好了嘛?

2015年的校招早就开始了,你还不知道吧?2015年最难就业季来了,你还没准备好嘛?现在就开始吧,已经很多大型互联网公司祭出毕业生底薪了看谷歌、看百度、看腾讯、看阿里巴巴再看传统软件公司:看微软、看联想、…

想入门图深度学习?这篇55页的教程帮你理清楚了脉络

选自arXiv作者:David Bacciu等机器之心编译意大利比萨大学的研究者发表论文,介绍了图深度学习领域的主要概念、思想和应用。与其他论文不同的是,这篇论文更像一份入门教程,既适合初学者作为学习材料,也可以帮助资深从业…

浅析深度学习中Batch Size大小对训练过程的影响

点击上方“视学算法”,选择加"星标"或“置顶”重磅干货,第一时间送达作者丨陈志远知乎(已授权)来源丨https://zhuanlan.zhihu.com/p/83626029 编辑丨极市平台导读 深度学习中batch size的大小对训练过程的影响是什么样的…

想学Python?那这套教程再适合不过了!

如果你想问最近这些年什么编程语言最值得学习,我相信很多人都会告诉你是Python!所以不仅是开发小白,甚至很多开发老手,也都开始学习Python,作为辅助第二语言来提高自己的职场竞争力。不过结合我最近这些年Python的学习…

一文看懂摄像头测距技术

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达摄像头测距深度检测主要技术方法:1.双目匹配(双RGB摄像头可选的照明系统)三角测量原理即目标点在左右两幅视图中成像的横坐标之间存在的差异(视差Disparity),与…

MyBatis-Plus 看这篇就够了

点击关注公众号,Java干货及时送达本文作者:yogurtzzz ;juejin.cn/post/6961721367846715428MyBatis-plus 是一款 Mybatis 增强工具,用于简化开发,提高效率。下文使用缩写 mp来简化表示 MyBatis-plus,本文主…

intellij idea的out目录下为什么会有与src名字相同的.class文件呢?

因为: 由IntelliJ IDEA从.class文件重新创建的源代码 当然,你删除了一个class文件。则其对应的.class文件也会被删除! 截图: 当然,这里存放的是。已经存在的class文件! 在运行main函数之后。就会再存储…

Django博客系统注册(图形验证码接口设计和定义)

1. 准备captcha包(该包用于生成图形验证码) 1.将生成图片验证码的库复制到新建的libs包中。 2.安装Python处理图片的库 这儿可能会变红显示错误: 解决方案:在虚拟环境中安装Pillow。执行pip install Pillow即可 2. 图形验证码后…