1、環境
python 3.4
Django 1.7
Visual Studio 2015 PTVS
2、問題
提交表單,出現以下錯誤:
CSRF verification failed. Request aborted.
3、解決
查看settings.py, 有 'django.middleware.csrf.CsrfViewMiddleware' 一句:
1 MIDDLEWARE_CLASSES = ( 2 'django.contrib.sessions.middleware.SessionMiddleware', 3 'django.middleware.common.CommonMiddleware', 4 'django.middleware.csrf.CsrfViewMiddleware', 5 'django.contrib.auth.middleware.AuthenticationMiddleware', 6 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 7 'django.contrib.messages.middleware.MessageMiddleware', 8 'django.middleware.clickjacking.XFrameOptionsMiddleware', 9 'cstnet.middleware.urlsfilter', 10 'jobfarm.middleware.MultipleProxyMiddleware', 11 'jobfarm.middleware.OAuthJobFarmFilter' 12 )
在表單處理函數前添加 @csrf_protect :
1 #申請表單處理 2 @csrf_protect 3 def doapply(request): 4 context = { 5 'group':request.POST['group'], 6 'host':request.POST['host'], 7 'image':request.POST['image'], 8 'net':request.POST['net'], 9 'vcpu':request.POST['vcpu'], 10 'num':request.POST['num'], 11 'remarks':request.POST['remarks'] 12 }; 13 ...
並在文件頭導入命名空間,不然會找不到csrf_protect:
1 from django.views.decorators.csrf import csrf_protect
運行正常。