程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> Django POST CSRF verification failed. Request abor

Django POST CSRF verification failed. Request abor

編輯:Python

環境

Window 7

Python2.7

Django1.4.1

sqlite3

問題

在使用Django搭建好測試環境後,寫了一個提交POST表單提交留言的測試頁面。

如圖:

Django表單

填寫表單,點擊“提交留言”按鈕提交到服務器,卻出現

Forbidden (403)

CSRF verification failed. Request aborted.

由於之前使用GET方式提交表單內容測試均正常,就以為這個問題估計是配置問題沒細看後邊的幫助提示直接在網上搜索解決方案。

一搜索發現相關網頁很多,看來大家都遇到過這個問題,想著應該很快能解決。

解決方案1:失敗

在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錯誤

Django表單

趕緊看了一下控制台,發現如下錯誤

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只好放棄這個方案!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved