gpt4 book ai didi

javascript - 如何正确地将 Django 与 AJAX 应用程序解耦?

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:43 26 4
gpt4 key购买 nike

我正在使用 TastyPie 和 Django 为具有浏览器和移动(原生 iOS)客户端的应用程序构建后端。

我已经阅读了 TastyPie 和 Django 文档,可以使用我设置的 TastyPie 资源或使用 Django 内置 View 成功进行身份验证。我看到很多关于在页面上包含 CSRF token 并使用 JavaScript 获取它的示例,这很有效,但我现在不明白如何实际确定用户是否在初始页面加载时登录(从 JavaScript)。

示例:

如果我想从一个单独的快速 Web 服务器提供静态 HTML,并缓存我的应用程序 JavaScript,并且仅通过 TastyPie View 与 Django 交互,我如何确定用户是否已登录(并知道呈现登录)表单或使用 JavaScript 的应用程序 View ),注销后,是否需要从客户端浏览器中删除任何 session 信息?

如果我通过 Django 的模板引擎提供 HTML,我可以通过那里适本地渲染登录表单,但如果我想真正将我的 JavaScript 应用程序与 Django 解耦(并且表现得像移动客户端),这似乎并不理想。

编辑:我正在使用 Backbone.js,但我认为这并不重要。

更新:

我想我通过再次阅读 Django 的 CSRF 文档找到了答案。

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

如果我不想渲染 Django 模板,这看起来就像我仍然可以使用 cookie 并将其拉入我的 Backbone 或 jQuery AJAX 方法中。我不确定 TastyPie 是否确保 cookie 将被发送或如何绑定(bind)到它。

如果我使用AJAX注销,cookie会自动删除还是失效?这些 CSRF token 对于每个用户 session 来说是唯一的吗?明天我必须用它测试一些东西。是否可以在 TastyPie View 上使用 Django 装饰器?

最佳答案

移动客户端并不关心 Javascript 是否来自 Django 或者任何其他 Web 服务器。因此,请继续将所有 JavaScript 和静态 HTML 放在另一台服务器上。

如果您希望移动应用程序查看用户是否已登录,则应向您的 Django 后端(请求经过身份验证的地方)发出 AJAX 调用。返回的数据应指示 session 是否处于事件状态(用户已登录)。

另一个 AJAX 调用可以执行 Django 注销功能。

关于javascript - 如何正确地将 Django 与 AJAX 应用程序解耦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18650551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com