2013-12-20 24 views
0

所以我重新考慮了我的代碼(因爲它太醜了,我不能離開它)。並且不觸及settings.py,SessionMiddleware已停止存在於Django中。request.session屬性在Django中消失

此回溯是在我刪除了需要會話的任何其他中間件之後。每當我調用嘗試從請求訪問會話的函數時,就會發生這種情況(正如您可以閱讀的那樣)。

AttributeError: 'WSGIRequest' object has no attribute 'session' 

在此之前,它是

AssertionError: The Django authentication middleware requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'. 

這裏是我在我的settings.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(和幾乎幾乎是我的副本)上發現了很多類似的問題,我試過了。我在這裏沒有看到什麼?

+0

您是否嘗試過運行''syncdb''? – niekas

+0

是的。我也嘗試過並清理了之前的會話。 –

+0

證明我的Django安裝已損壞。所有的項目(甚至是新的,沒有改變的都有這個問題)。與代碼或我的項目設置無關。 –

回答

0

因爲我相信這是很多新的Django開發人員的興趣,所以我會告訴我如何解決它作爲答案。

我通過卸載並重新安裝Django解決了這個問題。

顯然在卸載與Django相關的一些不必要的軟件包後,會話中間件「消失」或者被破壞(仍然試圖在此處解決)。但事實證明,它是用一個新的Django安裝修復的(因爲它是一個默認的Django中間件)。