django---session/redis/隔行换色

(一)引入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整除的都变成红色(用到了过滤器)

你可能感兴趣的:(django---session/redis/隔行换色)