Django使用redis存储session时,服务器总是报500

太坑了,被版本问题坑了好多次,我也是......一万个mmp,安装django-redis-sessions时没指定版本,所以系统默认安装最新版本。但是因为版本不兼容问题,服务器总是报500,还没有错误提示,起初还以为我的配置些写错了,但是对照了好多遍,发现应该不是配置问题,就察觉到版本问题,所以...... 成功了

这个500这不让人省心,一点错误提示都没有,直接500,不知道从哪下手。。。。。。。。。

如果你的服务器也是总报500错误,但就是没有提示,可能你也被版本问题坑到了

1. 首先卸载已经安装的 django-redis-sessions

打开doc窗口输入  pip uninstall django-redis-sessions

Django使用redis存储session时,服务器总是报500_第1张图片

2. 重新安装指定版本的 django-redis-sessions==0.5.6

doc窗口输入  pip install django-redis-sessions==0.5.6

Django使用redis存储session时,服务器总是报500_第2张图片

3. 顺便说一下配置流程,也为了方便以后自己使用

3.1 redis安装省略,自行查阅

3.2 在doc窗口 安装django-redis,在窗口中输入 pip install django-redis  目前没有发现版本不兼容问题

3.3 在doc窗口 安装django-redis-sessions==0.5.6,在窗口中输入pip install django-redis-sessions==0.5.6

3.4 在项目的settings.py 中配置如下:

# 在settings.py 文件中添加,位置不限
# 配置redis
CACHES = {
    "default":{
        "BACKEND":"django_redis.cache.RedisCache",
        # 此处如果redis在本机,可以用localhost或者127.0.0.1
        "LOCATION":"redis://192.168.142.130:8000", # redis端口号,默认6379
        "OPTIONS":{
            "CLIENT_CLASS":"django_redis.client.DefaultClient",
        }
    }
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"


SESSION_ENGINE = 'redis_sessions.session'
SESSION_REDIS_HOST = '192.168.142.130' # 此处如果redis在本机,可以用localhost或者127.0.0.1
SESSION_REDIS_PORT = 8000 # redis端口号,默认6379
SESSION_REDIS_DB = 0 # 连接redis哪个库0-15 随便指定
SESSION_REDIS_PASSWORD = ''
SESSION_REDIS_PREFIX = 'session'

3.5 添加完配置后,可以去测试项目了

指定应用下的view.py

from django.shortcuts import render,redirect

# Create your views here.

# 首页,游客第一次进入时,显示 欢迎:游客
# 登录后再次重定向到首页,显示 欢迎:用户名(从session中获取,该session存放在redis中)
def index(request):
    username = request.session.get('username',"游客")
    print("index--username = ",username)
    return render(request,'myApp/index.html',{"username":username})

# 跳转到登录页面
def gologin(request):
    return render(request,'myApp/login.html')

# 登录 将用户名存到session中,并保存到redis
# 登录后,重定向到首页
def login(request):
    username = request.POST.get('username')
    print("login--username = ",username)
    request.session['username'] = username
    # 0:即退出浏览器过期
    # 整数:整数S后过期
    # None:永不过期
    # 默认:两个星期后过期
    # request.session.set_expiry(10)
    return redirect('/index/')

# 退出登录
from django.contrib.auth import logout
def quit(request):
    # 1.清除当前session中的值 推荐使用
    # logout(request)
    # 2.clear清除session的值
    # request.session.clear()
    # 3.flush清除session中的值
    request.session.flush()
    return redirect('/index/')

urls.py

from django.conf.urls import url

from . import views
urlpatterns = [
    url(r'^index/$',views.index,name="index"),
    url(r'^gologin/$',views.gologin),
    url(r'^login/$',views.login),
    url(r'^quit',views.quit),
]

3.6 操作后,redis中数据保存成功  指定db0,成功存入 

Django使用redis存储session时,服务器总是报500_第3张图片

Django使用redis存储session时,服务器总是报500_第4张图片

页面和不重要步骤,省略较多,可能会看不明白,欢迎留言探讨

你可能感兴趣的:(Python基础学习)