Python Django中的request.session属性已消失

Python Django中的request.session属性已消失,python,django,session,django-middleware,Python,Django,Session,Django Middleware,所以我重新分解了我的代码(因为它太难看了,我不能离开它)。在不接触settings.py的情况下,SessionMiddleware停止存在于Django中 此回溯是在我删除了任何其他需要会话的中间件之后进行的。每当我调用试图从请求访问会话的函数时(如您所知),就会发生这种情况 在那之前是 AssertionError: The Django authentication middleware requires session middleware to be installed. Edit y

所以我重新分解了我的代码(因为它太难看了,我不能离开它)。在不接触settings.py的情况下,
SessionMiddleware
停止存在于Django中

此回溯是在我删除了任何其他需要会话的中间件之后进行的。每当我调用试图从请求访问会话的函数时(如您所知),就会发生这种情况

在那之前是

AssertionError: The Django authentication middleware requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'.
以下是我的
设置.py中关于会话的内容:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    # 'django.contrib.auth.middleware.AuthenticationMiddleware',
    # 'django.contrib.messages.middleware.MessageMiddleware',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

[...]

INSTALLED_APPS += ('django.contrib.sessions',)

# SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
SESSION_SAVE_EVERY_REQUEST = True

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake'
    },
    'files_downloads': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake'
    }
}
CACHE_BACKEND = 'locmem://'
有人知道我的服务器发生了什么吗


编辑:我在StackOverflow上发现了许多类似的问题(还有一些几乎是我的复制品),我已经试过了。有什么我没有看到的吗?

因为我相信这是许多新的Django开发者感兴趣的,所以我将告诉大家我是如何解决的

我通过卸载并重新安装Django解决了这个问题。


显然,在卸载了一些与Django相关的不必要的包之后,会话中间件“消失”或已损坏(仍在尝试解决此问题)。但事实证明,它是通过新的Django安装修复的(因为它是默认的Django中间件)。

您是否尝试过运行
syncdb
?是的。我确实尝试过,并且清理了以前的会话。结果证明我安装的Django已损坏。所有项目(即使是新的和未更改的项目也有此问题)。与代码或我的项目设置无关。
MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    # 'django.contrib.auth.middleware.AuthenticationMiddleware',
    # 'django.contrib.messages.middleware.MessageMiddleware',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

[...]

INSTALLED_APPS += ('django.contrib.sessions',)

# SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
SESSION_SAVE_EVERY_REQUEST = True

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake'
    },
    'files_downloads': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake'
    }
}
CACHE_BACKEND = 'locmem://'