2

在发布此之前,我已经尝试了在线发布的所有解决方案方法,包括 Stackoverflow 和 Django 上的解决方案。(我认为错误的原因可能是由于我使用的是较新的 jQuery 和 django 版本,并且大多数解决方案都已过时,使用 jQuery 1.9 和 django 1.5.1)

以下是一些不起作用的解决方案的 URL:

Django CSRF 检查因 Ajax POST 请求而失败

如何在 django 中使用 $.post?

https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax

任何帮助,将不胜感激。错误的另一种可能性是我实际上不确定将这些片段准确放置在哪里。到目前为止,我已经在文档加载时粘贴了 jquery 中的所有内容,我还尝试将代码粘贴到 .js 文件的开头。(我的 javascript 代码是分段的,有些是单独的 .js 文件,有些是与 django 上下文呈现的 html 内联的,所以任何带有“{{ csrftoken }}”的解决方案都是不好的。

谢谢!!

4

2 回答 2

2

仅当 CSRF 令牌存在于模板中或视图用ensure_csrf_cookie(). 放入将使其适用于您的所有页面{% csrf_token %}index.html

文档

CSRF 令牌也存在于 DOM 中,但前提是在模板中使用 csrf_token 显式包含。

...

如果您的视图未呈现包含 csrf_token 模板标签的模板,则 Django 可能不会设置 CSRF 令牌 cookie。这在表单被动态添加到页面的情况下很常见。为了解决这种情况,Django 提供了一个视图装饰器来强制设置 cookie:ensure_csrf_cookie()。

于 2013-08-07T04:56:50.137 回答
1

你可以试试这个:

$.ajax({
            type: "POST",
            url: '{% url "some_url_which_accepts_post" %}',
            data: {'csrfmiddlewaretoken': '{{csrf_token}}', 'comment_id':1},
            success: function(data, textStatus){
                //something
            },  
        }); 
于 2013-08-07T04:50:25.483 回答