在django 1.3中具有jquery和$ .post的CSRF

|| 在django 1.3中,现在即使使用ajax也必须使用csrf。 我使用jquery,现在我想将csrf令牌添加到$ .post。我怎样才能做到这一点?我在jquery方面不是很熟练,所以很好的描述会很好。 这是一个评分应用,点击星号即可发送帖子。 我看过django文档,但不了解我的情况该怎么办。我的代码如下:
$(function() {  
            $(\"#avg\").children().not(\":input\").hide();
            $(\"#rating-widget\").children().not(\"select\").hide();    

            $caption = $(\"<span/>\");

            $(\"#avg\").stars({captionEl: $caption});
            $(\"#rating-widget\").stars({
                inputType: \"select\",
                cancelShow: false,
                captionEl: $caption,
                callback: function(ui, type, value){
-------------->     $.post($(\"#rating-widget\").attr(\"action\"), {score: value}, function(data){

                    });
                }
            });
               $caption.appendTo(\"#rating-widget\");

});
应该说javascript不在模板中,而是在静态文件中。 最好将其放在模板中,以便我可以使用
{{ csrf_token }}
提前致谢!     
已邀请:
        将此代码放在函数之前。它将负责CSRF。
$(\'html\').ajaxSend(function(event, xhr, settings) {
    function getCookie(name) {
        var cookieValue = null;
        if (document.cookie && document.cookie != \'\') {
            var cookies = document.cookie.split(\';\');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + \'=\')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
    if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
        // Only send the token to relative URLs i.e. locally.
        xhr.setRequestHeader(\"X-CSRFToken\", getCookie(\'csrftoken\'));
    }
});
    
        在django文档中,您可以找到有关如何在每个ajax请求中自动包括csrf令牌的简单描述!     
        您不必使用表格!只需创建绑定到\“ stars \”发布的函数的新URL。例如
(r\'^myapp/star-post/(?P<post_id>.*)/$\',\'myapp.views.myview\')
因此,如果您向该URL发送请求,它将在数据库中找到该帖子,将字段更改为\“ starred \”,然后将响应返回给ajax。 然后,您可以使用成功的回调函数,该函数将相应地更改CSS(填入星号等)。这样,您不必担心CSRF。 但是您可能会问,跨站点脚本攻击该怎么办!好吧,如果您将用户身份验证与Cookie验证结合使用,则不必担心! Aaa和你很好。     

要回复问题请先登录注册