參考官方文檔: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