如何在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 数据

如何在 Django 中使用 Ajax

如何在 Django 的 ajax POST 中返回新的 csrf 令牌?

如何使用 Django 和 Jquery 实现 ajax?

Django 如何让ajax的POST方法带上CSRF令牌

如何使用带有 ajax 的 DJANGO REST 框架发出 POST 请求