1. 注册状态保持
状态保持
• 如果需求是注册成功后即表示用户登入成功,那么此时可以在注册成功后实现状态保持
• 如果需求是注册成功后不表示用户登入成功,那么此时不用在注册成功后实现状态保持
@@@ 我的需求是注册后跳转首页 @@@
login()方法介绍 我来写代码实现, 功能由django提供
1. 用户登入本质:
• 状态保持
• 将通过认证的用户的唯一标识信息(比如:用户ID)写入到当前浏览器的 cookie 和服务端的 session 中。
2. login()方法:
• Django用户认证系统提供了login()方法。
• 封装了写入session的操作,帮助我们快速登入一个用户,并实现状态保持。
3. login()位置:
• django.contrib.auth.init.py文件中。
开始做吧, 之前我就是留着状态保持,现在来做:
step 1 导入login 方法
from django.contrib.auth import login
step 2 使用login() 并查看一下该方法的脚本 :
封装session 操作
step 3
之前models.py 中我们用私有方法 def _creat_user() 这个方法return user ,当时并没有用到返回值user,现在可以用上了。
所以,将整句赋值给user 即接收user, 这个user 就能在login()中使用为user参数了,实现状态保持。
这时候运行注册后不会 跳转首页,但是数据库中会有注册信息,原因是什么?
想想看,
由login()方法可知, session保存在redis里。
request.session[SESSION_KEY] = user._meta.pk.value_to_string(user)
request.session[BACKEND_SESSION_KEY]