如果我从按钮发送AJAX POST请求。我是否需要在视图中验证CSRF令牌,或者Django在接受POST时是否自动为您执行此操作?如果没有,我如何自己手动验证?
另外,在创建表单并传入请求时,Form对象是否会自动执行此验证是否正确?
jQuery的:
<script>
$(document).ready(function() {
$('#button1').click(function(){
$.post("/", {
unique_id : "{{ unique_id }}",
csrfmiddlewaretoken: '{{ csrf_token }}'
});
});
});
</script>
答案 0 :(得分:1)
如果项目'django.middleware.csrf.CsrfViewMiddleware',
中的MIDDLEWARE_CLASSES
中有settings.py
,则CsrfViewMiddleware
会自动验证csrf_token
。 documentation中也提到了这一点:
对于所有未使用HTTP GET,HEAD,OPTIONS的传入请求 或TRACE,必须存在CSRF cookie,并且'csrfmiddlewaretoken' 字段必须存在且正确。如果不是,用户将得到一个 403错误。
此检查由CsrfViewMiddleware完成。