django使用ajax报错:"forbidden (CSRF token missing or incorrect.): /user/register/"
django使用ajax报错:“forbidden (CSRF token missing or incorrect.): /user/register/”报错内容如下:[22/Jan/2019 03:44:00] "GET / HTTP/1.1" 404 2015[22/Jan/2019 03:44:11] "GET /user/register/ HTTP/1.1
·
django使用ajax报错:“forbidden (CSRF token missing or incorrect.): /user/register/”
报错内容如下:
[22/Jan/2019 03:44:00] "GET / HTTP/1.1" 404 2015
[22/Jan/2019 03:44:11] "GET /user/register/ HTTP/1.1" 200 4308
Forbidden (CSRF token missing or incorrect.): /user/register/
[22/Jan/2019 03:44:25] "GET /user/register/?username=18381665323&pwd=12345678&cpwd=12345678&email=930047011%40qq.com&allow=on HTTP/1.1" 200 4308
[22/Jan/2019 03:44:25] "POST /user/register/ HTTP/1.1" 403 2502
Performing system checks...
在原先的视图view中的函数定义如下:
import re
from django.http import HttpResponse, JsonResponse
from django.shortcuts import render
# Create your views here.
def register(request):
if request.method == 'GET':
return render(request, 'register.html')
if request.method == 'POST':
name = request.POST.get('username')
pwd = request.POST.get('pwd')
cpwd = request.POST.get('cpwd')
email = request.POST.get('email')
allow = request.POST.get('allow')
print('DATA: ', name, pwd, cpwd, email, allow)
if pwd != cpwd:
data = {'code': 1000, 'mag': '两次密码不等'}
return JsonResponse(data)
if allow != 'on':
data = {'code': 1010, 'msg': '请同意协议'}
return JsonResponse(data)
if not re.match("^^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$", email):
data = {'code': 1030, 'msg': '邮箱格式错误'}
return JsonResponse(data)
if not all([name, pwd, cpwd, email, allow]):
data = {'code': 1040, 'msg': '请填写所有信息'}
return JsonResponse(data)
if all([name, pwd, cpwd, email, allow]):
data = {'code': 200, 'msg': 'OK'}
return JsonResponse(data)
解决办法:在视图view函数之前添加"@csrf_exempt"即可解决问题,修改如下:
import re
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse, JsonResponse
from django.shortcuts import render
# Create your views here.
@csrf_exempt
def register(request):
if request.method == 'GET':
return render(request, 'register.html')
if request.method == 'POST':
name = request.POST.get('username')
pwd = request.POST.get('pwd')
cpwd = request.POST.get('cpwd')
email = request.POST.get('email')
allow = request.POST.get('allow')
print('DATA: ', name, pwd, cpwd, email, allow)
if pwd != cpwd:
data = {'code': 1000, 'mag': '两次密码不等'}
return JsonResponse(data)
if allow != 'on':
data = {'code': 1010, 'msg': '请同意协议'}
return JsonResponse(data)
if not re.match("^^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$", email):
data = {'code': 1030, 'msg': '邮箱格式错误'}
return JsonResponse(data)
if not all([name, pwd, cpwd, email, allow]):
data = {'code': 1040, 'msg': '请填写所有信息'}
return JsonResponse(data)
if all([name, pwd, cpwd, email, allow]):
data = {'code': 200, 'msg': 'OK'}
return JsonResponse(data)

更多推荐
所有评论(0)