第二十六课----Django(3)

今天来写Django的第三部分---登录成功将用户信息放入 session

在我们登陆成功之后,我们需要把用户信息显示在页面上,并且在跳转到别的页面的时候,这个用户依然是已经登陆的状态浏览器可以识别,这就需要session--会话作用域

session:

1.installed_apps

2.中间件(帮我们启用session)

3.设置存储形式(储存在设置数据库中)

4.引用 request.session

session只能储存 json 也就是字典类型的数据

Django session的设计原理:

a:如果用户是第一次请求(就看客户端ie是否保存了sessionld的cookie)

创建 session model  

生成一个 key sessionld 随机的一个字符串 (uuid 使 id 永远也不会重复)

保存到你 session_engine 指定的位置

保存到 cookie 中,在客户的浏览器中

b:乳沟第二次以上的请求,客户端ie 都会自动提交 cookie 到 Django 中,Django 中 利用你配置的 SessionMiddleware 中间件激活session 利用 cookie 中的 sessionID 到 session_engine 指定位置读取 session model,并设置到 request 的 session 属性上

正式因为这样才能在view 里面通过request.session 使用session 能力

session本省就是一个 dict 字段

session 在存数据时数据必须支持序列化 json

我们首先需要把  app 的 session 在数据库中创建一个表 使用 shell命令 migrate sessions

这时我们会发现数据中创建了一个 session 的表来存储 session 的创建时间和到期时间(默认时间为两周)


接着我们修改views.py中的代码让用户登陆成功之后把它保存在 session 中,以便于以后任何函数都可以在session中获取到信息

再修改一下 welcome.html

接着运行程序到登陆页面,然后登陆一个数据库中已有的用户

会显示"登录成功

            welcome---------"

然后我们关闭浏览器,再次打开浏览器,在地址栏输入http://127.0.0.1:8000/welcome会发现内容不变

当我们把浏览器的cookie清除,再次输入http://127.0.0.1:8000/welcome

会显示"登录成功

            welcome---------"

这说明会话是通过cookie和session共同保存的,cookie 是保存在浏览器里,session保存在数据库中

接下来我们实现不登陆的话看不到welcome这个页面,如果不登陆,直接访问welcome页面时就会自动跳转到登陆页面

并且登陆成功之后可以实现退出功能(使session失效)并且退出后又回到登陆页面

我们需要在views,py中添加退出函数

并且修改一下welcone.html,在里面做一个判断

同时配置一下路径

接着我们运行程序来到登陆页面,登录数据库已有的数据

我们点击退出

再点击登录又会回到登录页面


我们创建两个页面,放在welcome中,一个a.html,一个b.html,完成功能当没有登录的时候是访问不到a.html的,必须要登录才能看到

接着在views.py中写函数

修改登录成功后的函数

配置路径

修改welcone页面


然后我们运行项目,来到welcome 页面

当我们没有登录点击a时

需要登录才可以看见内容

当我们从login页面登录过来时,点击aaa 时就可以直接看到aaa中的内容了

那么今天的Django就没有了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值