如何在Django使用ajax的POST
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Django使用ajax的POST相关的知识,希望对你有一定的参考价值。
post方式不同于get方式可以被django直接得到,因为django为post加入了csrf保护, 详细的文档地址https://docs.djangoproject.com/en/dev/ref/csrf/注释:在最新版本中,在setting.py里'django.middleware.csrf.CsrfViewMiddleware',默认是使用中的,如果没有请自行添加,并且确保此引用在其他所有viewware前面
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',//this line is vsrf
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django_cas.middleware.CASMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
如果想避过csrf检测这一层直接使用post的话,有几种方法:
1 需要在views.py里要出发post请求的函数前加入@csrf_exempt ,之前要引入from django.views.decorators.csrf import csrf_exempt
2 在 settings.py 中 MIDDLEWARE_CLASSES 中 注释掉'django.middleware.csrf.CsrfViewMiddleware'
说下正确使用csrf的方法 :
对于ajax.post方法,需要在ajax方法触发前加入一段js,这段我理解是用来生成不同的token,但是很好奇如果禁掉了co 参考技术A 看下django 文档关于csrf的实例吧有ajax的,需要在cookie中把csrftoken添加到post数据中,当然也可以关闭csrf 参考技术B 看下django 文档关于csrf的实例吧有ajax的,需要在cookie中把csrftoken添加到post数据中,当然也可以关闭csrf
以上是关于如何在Django使用ajax的POST的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 视图中使用 ajax POST 解析 json 数据