Javascript 德扬戈。要使用csrf,必须调用render_to_响应;页面重新加载时与ajax不兼容

Javascript 德扬戈。要使用csrf,必须调用render_to_响应;页面重新加载时与ajax不兼容,javascript,ajax,django,csrf,django-csrf,Javascript,Ajax,Django,Csrf,Django Csrf,我得出了一个可怕的结论:就csrf保护而言,可能不可能使用ajax和django: def my_view(request): c = {} c.update(csrf(request)) return render_to_response("a_template.html", c) 这就是django的例子。但是,如果我确实呈现了一个对一个的响应,这将重新加载页面,这使得ajax变得毫无用处 有没有办法绕过这个问题?你的结论完全不正确 Django文档很好地概述了。您

我得出了一个可怕的结论:就csrf保护而言,可能不可能使用ajax和django:

def my_view(request):
    c = {}
    c.update(csrf(request))
    return render_to_response("a_template.html", c)
这就是django的例子。但是,如果我确实呈现了一个对一个的响应,这将重新加载页面,这使得ajax变得毫无用处


有没有办法绕过这个问题?

你的结论完全不正确


Django文档很好地概述了。您断言需要使用render_to_响应是一种转移注意力的方法:这是将值放入模板的一种方法,但正如文档所说,规范值在cookie中。无论如何,通过
render\u to\u response
(或者更好的是,
render()
)返回Ajax响应是完全可能的,而无需刷新页面:这取决于您的Javascript。

这是可行的。这篇文章可能会帮助您开始:谢谢karthikr,我没有使用示例中的模板:{%csrf_token%}。。。我不知道在没有模板的情况下如何设置csrf cookie。这是您如何设置的:stackoverflow.com/questions/3289860/…或者类似的东西:docs.djangoproject.com/en/dev/ref/contrib/csrf/…但是谁设置cookie呢?这里不是设置了cookie:c.update(csrf(request))?不,根本不是。这只是为了将它包含在模板上下文中:如果您没有使用带有
{%csrf\u token%}
调用的模板,那么它就无关紧要了。正如文档所说,cookie是由CSRF中间件自动设置的:see.i;当我第一次呈现页面时,我没有调用django。它是一个静态页面,并根据需要异步调用django。此外,我还启用了csrf中间件。当我试着用js找到苦力时,它不见了,不在那里。