Session&&Cookie:使用Django-redis配置web的session缓存到Redis数据库&& 记住用户名

参考官方文档:https://django-redis-chs.readthedocs.io/zh_CN/latest/

SESSION

1、安装

直接在虚拟环境里面安装:
pip install django-redis

2、在Django的settings.py中配置session缓存

# Django-redis 作为session的缓存配置分为两步
# 1.django的缓存配置, 使用redis
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/9", # 根据redis的位置可以更换IP
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

# 2.配置session存储
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

3、查看是否成功:

1、浏览器点开F12打开调试工具的Network进行抓包
2、在终端中查询redis数据库:

toohoo@ubuntu:~$ redis-cli -h 127.0.0.1
127.0.0.1:6379> select 9
OK
127.0.0.1:6379[9]> keys *
(empty list or set)
127.0.0.1:6379[9]> keys *
1) ":1:django.contrib.sessions.cachechde4jsoan3pvhv00bf1ijq62fo9ao3b"
127.0.0.1:6379[9]> 

可以看到已经将session存储到了9号数据库。

COOKIE

cookie的一个应用就是可以用来记住登录状态或者记住用户名,现在说一下记录用户名:例如登录页面上设置了记录用户名的复选框,名字name叫做remember:

1、设置cookie

根据获取的remember的值来判断是否需要记住用户名: 设置cookie:set_cookie,否则就删除cookie:delete_cookie:

 # 判断是否需要记住用户名
 remember = request.POST.get('remember')
 if remember == 'on':
     response.set_cookie('username', username, max_age=7 * 24 * 3600)
 else:
     response.delete_cookie('username')

2、判断是否存在cookie

在登录的时候先判断是否存在cookie,是就取出来,否则就设置为空:并通过字典返回对应的值给前端页面模板显示:

def get(self, request):
        '''显示登录页面'''
        # 判断是否记住密码
        if 'username' in request.COOKIES:
            username = request.COOKIES.get('username') # request.COOKIES['username']
            checked = 'checked'
        else:
            username = ''
            checked = ''
        # 返回对应的值, 页面通过模板进行显示
        return render(request, "login.html", {'username':username, 'checked':checked})

博客参考代码和项目URL:
https://github.com/too-hoo/mydailyfresh/blob/master/apps/user/views.py

你可能感兴趣的:(redis缓存,Python,Django,redis)