您的位置:首页 > 编程语言 > Go语言

Django内置模型User常见的操作

2020-07-08 10:04 435 查看

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 对象

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: