Window 7
Python2.7
Django1.4.1
sqlite3
在使用Django搭建好測試環境後,寫了一個提交POST表單提交留言的測試頁面。
如圖:
填寫表單,點擊“提交留言”按鈕提交到服務器,卻出現
Forbidden (403)
CSRF verification failed. Request aborted.
由於之前使用GET方式提交表單內容測試均正常,就以為這個問題估計是配置問題沒細看後邊的幫助提示直接在網上搜索解決方案。
一搜索發現相關網頁很多,看來大家都遇到過這個問題,想著應該很快能解決。
在settings.py的MIDDLEWARE_CLASSES加入
'django.middleware.csrf.CsrfResponseMiddleware',
最終settings.py MIDDLEWARE_CLASSES 配置部分的代碼如下:
MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', # add 'django.middleware.csrf.CsrfResponseMiddleware', # add end 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', # Uncomment the next line for simple clickjacking protection: # 'django.middleware.clickjacking.XFrameOptionsMiddleware', )
保存,重新加載http://127.0.0.1/comment/add頁面提交留言測試。
但在打開頁面時出現500錯誤
趕緊看了一下控制台,發現如下錯誤
Traceback (most recent call last): File "D:\Python27\lib\wsgiref\handlers.py", line 85, in run self.result = application(self.environ, self.start_response) File "D:\Python27\lib\site-packages\django\contrib\staticfiles\handlers.py", l ine 67, in __call__ return self.application(environ, start_response) File "D:\Python27\lib\site-packages\django\core\handlers\wsgi.py", line 219, i n __call__ self.load_middleware() File "D:\Python27\lib\site-packages\django\core\handlers\base.py", line 51, in load_middleware raise exceptions.ImproperlyConfigured('Middleware module "%s" does not defin e a "%s" class' % (mw_module, mw_classname)) ImproperlyConfigured: Middleware module "django.middleware.csrf" does not define a "CsrfResponseMiddleware" class [12/Sep/2012 11:00:35] "GET /comment/add/ HTTP/1.1" 500 59
大致的意思是我剛才在settings.py的MIDDLEWARE_CLASSES內添加的
'django.middleware.csrf.CsrfResponseMiddleware',
這個模塊找不到,當時就有點郁悶了。網上一大堆都說是添加這個模塊解決問題的,現在我本機上添加這個模塊以後卻提示沒有找到模塊?
為此,我重新把Django重新安裝了一遍還是提示找不到模塊。我只好到官網去看看手冊,才發現Django新版已去掉這個模塊。而我的Django正好是最新版本1.4只好放棄這個方案!