(一)引入session
Session与Cookie是紧密相关的。 Session的使用要求用户浏览器必须支持Cookie,如果浏览器不支持使用Cookie,或者设置为禁用Cookie,那么将不能使用Session。
Session信息对客户来说,不同的用户用不同的Session信息来记录。当用户启用Session时,ASP自动产生一个SessionID.在新会话开始时,服务器将SessionID当做cookie存储在用户的浏览器中。
session相比较cookie来说比较安全
我的理解:如果你是今天登陆这个网站(前提是你已经注册过这个网站),
然后点击登陆,登陆成功的话 这行代码会自动生成一个cookie,并且为你设置一个对应得session.id。此时当你登陆成功的话就有两个cookie,一个是你自己设置的,一个是系统自动生成的。
当你再次登陆这个网站打开任何一个界面的时候,系统会自动匹配你的sessionid,
注意:自己设置的cookie 健名一定不要和sessionid重名,这样第二次进入系统的时候,内部会匹配不到
(二)代码
request.session['cueernt']=username -----引入session[健]=需要记录的内容
print('session:%s'%request.session.get('cueernt'))----在同一个app下的其他方法里打入这句话可以获取用户名
(三)判断你的session id 是否建构成功(写一个判断)
def test01(request):
reet = request.session.get('cueernt')
if not reet:
return redirect('/user/login')
return render(request, 'user/success.html')
(四)引入redis
1.与其他用户状态保存方案比较
一般开发中用户状态使用session或者cookie,两种方式各种利弊。
Session:在InProc模式下容易丢失,并且引起并发问题。如果使用SQLServer或者SQLServer模式又消耗了性能
Cookie则容易将一些用户信息暴露,加解密同样也消耗了性能。
Redis采用这样的方案解决了几个问题,
1.Redis存取速度快。
2.用户数据不容易丢失。
3.用户多的情况下容易支持集群。
4.能够查看在线用户。
5.能够实现用户一处登录。(通过代码实现,后续介绍)
6.支持持久化。(当然可能没什么用)
7.相比直接在数据库里寻找session.id要快
自己理解:因为如果这个网站在这一时刻有很大的浏览量,每个用户都有属于自己的session.id,如果服务器每次都在数据库里面寻找的话会特别慢,所以直接加载到redis里面
(五)安装redis步骤
设置redis
第一步:安装pip install django-redis-sessions
第二步:配置settings.py文件
#redis缓存session
SESSION_ENGINE = 'redis_sessions.session'
SESSION_REDIS_HOST = '192.168.12.18'------IP地址
SESSION_REDIS_PORT = 6379
SESSION_REDIS_DB = 0
SESSION_REDIS_PASSWORD = ''----设置密码
SESSION_REDIS_PREFIX = 'session'
第三步:redis-cli ----进入环境
如果不成功 输入sudo apt install redis-server
此时sessionID将存储在redis里面
(六)隔行换色
{% if forloop.counter|divisibleby:'2'%}style='bakegroud-color:'red';'{%endif%}
能被2整除的都变成红色(用到了过滤器)
网友评论