一.Redis的配置
1.django的缓存配置
# redis在django中的配置 CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "CONNECTION_POOL_KWARGS": {"max_connections": 100} # "PASSWORD": "123", } } }
2.django中session的配置
# session的存储配置 SESSION_ENGINE = 'django.contrib.sessions.backends.cache' SESSION_CACHE_ALIAS = 'default' # 设置session失效时间,单位为秒 SESSION_COOKIE_AGE = 60*5
配置完这个2个后,在视图中再设置session,就会自动将session保存在Redis中
二.路由
from django.conf.urls import url from django.contrib import admin from api import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^session/$',views.SetSession.as_view() ), ]
三.视图
这里视图使用的是MBV,还用了restframework
from rest_framework.views import APIView # Create your views here. from rest_framework.response import Response from api import models class MyResponse(): def __init__(self): self.status=100 self.msg=None @property def get_dic(self): return self.__dict__ class SetSession(APIView): # 设置session,直接request.session就自动把session值保存到Redis中了 def post(self,request): response = MyResponse() request.session["username"]="django" request.session["verify_code"]="123" response.msg="保存session成功" return Response(response.get_dic) # 获取session,直接从request.session中取session的值 def get(self,request): response = MyResponse() username_redis=request.session.get("username") verify_code_redis=request.session.get("verify_code") print(username_redis,verify_code_redis) if username_redis=="django" and verify_code_redis=="123": response.msg="验证成功" return Response(response.get_dic) response.msg="验证失败" response.status=101 return Response(response.get_dic)
四.浏览器发送请求
这里使用了postman
设置session用了post请求
获取session用了get请求