django之使用redis储存session

版权声明:随手笔记,请勿模仿 https://blog.csdn.net/qq_20681909/article/details/84972812

首先配置settings里的环境

# ********************************************配置缓存所用
# session使用的存储方式
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
# 指明使用哪一个库保存session数据
SESSION_CACHE_ALIAS = "session"

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1", # 指明使用redis的1号数据库
        "OPTIONS": {
        "CLIENT_CLASS": "django_redis.client.DefaultClient",
                    }
                },
    "session": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/2", # 指明使用redis的2号数据库
        "OPTIONS": {
        "CLIENT_CLASS": "django_redis.client.DefaultClient",
                    }
                }
}

myapp里的views.py

须要的包

from django.contrib.auth import authenticate, login#由于使用的是django的内置认证系统,所以要用这个包认证账号和密码
# /登录类
class LoginView(View):
    '''登录'''
    def get(self, request):
        '''显示登录页面'''
        # 判断是否记住了用户名
        if 'username' in request.COOKIES:
            username = request.COOKIES.get('username')
            checked = 'checked'
        else:
            username = ''
            checked = ''
        # 使用模板
        return render(request, 'login.html', {'username':username, 'checked':checked})
    def post(self, request):
        '''登录校验'''
        # 接收数据
        username = request.POST.get('username')
        password = request.POST.get('pwd')
        # 校验数据
        if not all([username, password]):
            return render(request, 'login.html', {'errmsg':'数据不完整'})
        # 业务处理:登录校验,django认证系统自己区分加密的账号密码,正确返回user,不正确返回None
        user = authenticate(username=username, password=password)
        if user is not None:
            # 用户名密码正确
            if user.is_active:
                # 用户已激活
                # 记录用户的登录状态
                login(request, user)
                #获取登录后所需要跳转到的地址,刚开始“next”没有值,如果没有值就返回首页
                #默认跳转到首页,返回点击个人中心
                next_url=request.GET.get("next",reverse("goods:index"))
                # 跳转到首页
                response = redirect(next_url) # HttpResponseRedirect
                # 判断是否需要记住用户名
                remember = request.POST.get('remember')
                if remember == 'on':
                    # 记住用户名,设置cookie,保存一周
                    response.set_cookie('username', username, max_age=7*24*3600)
                else:
                    response.delete_cookie('username')
                # 返回response,跳转到首页
                return response
            else:
                # 用户未激活
                return render(request, 'login.html', {'errmsg':'账户未激活'})
        else:
            # 用户名或密码错误
            return render(request, 'login.html', {'errmsg':'用户名或密码错误'})

猜你喜欢

转载自blog.csdn.net/qq_20681909/article/details/84972812
今日推荐