django.middleware.csrf.get_token()用法

时间:2013-01-17 06:43:29

标签: django django-csrf csrf-protection

请考虑以下情形:{% csrf_token %}中的网页已加载<form>。稍后,使用ajax(post)执行此表单的提交(包括隐藏的csrf_token),而不重新加载页面。
在服务器端,据我所知,令牌应该被发送回客户端并替换<form>中的令牌,因为令牌可以根据其生命周期进行更新(顺便说一下,令牌重新生成时) ?)
要获取令牌并发送响应,我正在考虑使用django.middleware.csrf.get_token(),但在代码中它似乎只返回从客户端发送的那个。
那么get_token()会返回最新的吗?

1 个答案:

答案 0 :(得分:1)

使用

在js中检索你的csrf标记
var csrf_token = $(this).data('csrf');  // $(this) refers to your form in your html

然后:

$('#yoursubmitbutton').click(function() {
$.ajax({
            url: url,
            type: "POST",
            dataType: "json",
            data: { csrfmiddlewaretoken: csrf_token, other_data: other_data },
            success: function(data) {
                if (data['success']=='true') {
                    // Handles success
                } else {
                    // Handles failure failed.
                }

                // Any logic you want
            },
            error: function() {
                                   // Error handling
            }
        }) 
});  // click event