在阅读网页时保留csrf令牌

时间:2014-12-16 20:52:44

标签: django csrf django-csrf django-1.7

我有部分视图,我在一些网址上提供:

url(r'^main.html$', PartialGroupView.as_view(template_name='main.html'), name='main')

我试图在代码中的其他地方读取该URL:

partial = urllib2.urlopen(partial_url).read()

而不是我想把它发送给用户:

return HttpResponse(partial)

一切正常,但问题是该页面包含一个csrf令牌,之后,当用户获取发送给他的页面时,他尝试提交表单,但是当他这样做时,错误是抛出,说令牌丢失或不正确。在第一步,如果我只使用此方法将视图发送给用户,则令牌正常工作。

当我以这种方式阅读页面时,有没有办法保留该令牌?或者有没有其他方法来阅读页面而不违反csrf?

个人解决方案:

在我的情况下,我决定有一个更好的方法,并放弃从网址阅读HTML。我只是这样发送部分:

render(request, demanded_partial_name)

因为它在本地可用。

1 个答案:

答案 0 :(得分:0)

最简单的选择是使视图CSRF免除,如here所示。

最好的想法是查看this SO帖子。基本上,当您对url进行编码时,您正在做的是传入参数字典,并且该字典将包含csrf中间件令牌。