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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章