【问题标题】:How to get the csrf_token in python(Django)如何在 python(Django) 中获取 csrf_token
【发布时间】:2015-11-11 13:00:47
【问题描述】:


我想构建一个 cordova 应用程序,我想在应用程序上使用表单(django 后端)。

我的问题是如何在 python 中获取 csrf_token 以便我可以序列化它并将其发送到 javascript?

我们将不胜感激。
谢谢

【问题讨论】:

标签: javascript python django cordova


【解决方案1】:

我刚刚得到了正确答案..感谢大家的帮助。

from django.shortcuts import render_to_response
from django.template.context_processors import csrf

def my_view(request):
    csrf = unicode(csrf(request)['csrf_token'])

【讨论】:

    【解决方案2】:

    CSRF 令牌存在于{{ csrf_token }} 下的模板渲染上下文中。如果在模板中内联 Javascript,则可以渲染它。

    <html>
    <head>
    <script language="JavaScript">
    var csrfToken = "{{ csrf_token }}";
    </script>
    </head>
    </html>
    

    另一种方法是从 javascript 访问 cookie(感谢 Sergio Garcia)。操作方法在他的链接中。

    【讨论】:

    • 实际上 django 文档显示 csrf_token 包含在 cookie 中。 docs.djangoproject.com/en/1.8/ref/csrf/#ajax
    • @SergioGarcia - 获取 csrf_token 的方法不止一种,此处显示的模板标签 其中之一。
    • 是的,但不是推荐的。如果他打算在 JS 上使用它,那么在第一个 ajax 请求之后,您的解决方案就会出错。使用 cookie 仍然可以得到正确的令牌。
    • 第一次 ajax 调用后,我在 cookie 中得到 csrf_token ?不是更好的主意:当进行 ajax 调用时,使用您在 python 中获得的令牌响应 ajax 调用?
    • 是一个 Cordova 应用程序(移动应用程序)。与 django 模板无关。我仅将 django 用于后端和数据库。我使用 ajax 调用与 django 连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 2018-11-16
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    相关资源
    最近更新 更多