AI智能
改变未来

Django内置模型User常见的操作


Django内置的模型类User

常见的方法有:
create_user:创建普通用户,会对密码进行加密
create_superuser:创建超级用户,会对密码进行加密
set_password:对密码进行加密
username
password
email
is_superuser
is_staff
is_active

User模型的扩展

如果User模型中的字段不够,可以通过关联关系的方式进行扩增
自定义模型,通过OneToOneField

  • 如果只有一张用户表,扩展方式为:
    自定义一个模型,继承AbstractUser类,在自己的模型中定义额外的字段,需要在settings.py文件中农进行配置
    AUTH_USER_MODEL

    设置为自己的模型,重新迁移

User模型中常见的方法

  • create_user(username, password, email, **extra_fields)创建用户
extra_fields:代表传User模型中的其他属性
  • create_superuser(username, password, email, **extra_fields)创建超级用户
  • set_password:对密码加密
  • check_password:检查密码

User模型在使用过程中,常见的函数

django.contrib.auth.hasher.make_password

:对密码进行加密

django.coontrib.auth.hasher.check_password

:检查密码是否一致

django.contrib.auth.authenticate(request, username, password)

:认证

认证成功会返回user对象认证过程中做了三件事:1.根据用户名查到用户信息 2.比较密码 3.判断是否激活

django.contrib.auth.login(request, user)


向session中存储了三个值
SESSIN_KEY:登录的用户ID
BACKEND_SESSION_KEY:存的是一个类对应的字符串
HASH_SESSION_KEY:认证的Hash字符串
将认证成功的User对象,赋值给了request.user

django.contrib.auth.logout(request)

:用户的登出功能

Session 会话的工作原理

request.session

: 是用来获取session

当用户使用 session (request.session)的时候,服务器会获取浏览器对应的cookie (request.COOKIES)
并找到 cookie name = sessionid 的 cookie

如果 找不到 (第一次使用session), 服务器会创建一个 session对象 ,并将 session的 ID 写入到

浏览器的 cookie 中 (response.addCookie) , name=sessionid , value = session的ID

如果 找到了 sessionid 对应的 cookie , 通过 cookie 对应 value值 ,去服务器中获取 session 对象

Session 适合存放的数据特点

  • django中的 session 存储的数据,必须能够JSON序列化

  • 和用户相关的数据、用户指的是浏览器

Session 的默认存活时间是 : 2周

SESSION_COOKIE_AGE : 设置session的默认存活时间

SESSION_EXPIRE_AT_BROWSER_CLOSE : 设置 session存活时间是否随浏览器的关闭而消亡

SESSION_SERIALIZER : 设置 Session的序列化方式

request.session[key] = value

request.session.clear_expired() : 清除过期的session
request.session.flush() : 销毁当前session 对象

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Django内置模型User常见的操作