【问题标题】:How can I do an AJAX request with an authenticated user in Django?如何在 Django 中对经过身份验证的用户执行 AJAX 请求?
【发布时间】:2013-08-27 04:33:06
【问题描述】:

我需要使用 AJAX 与使用 Django 的已通过身份验证的用户进行 HTTP 调用。

是否有任何标准的简单方法可以做到这一点?我读过这个other question,但使用了不同的技术。

我正在使用 HTTP(不是 HTTPS)并使用像 django-tastypie 这样的第三方应用程序来实现这个独特的“简单”目的,不是吗?

【问题讨论】:

  • 你不想在这个 ajax 调用中进行身份验证??

标签: django jquery


【解决方案1】:

Ajax 请求与任何其他类型的请求没有什么不同。如果用户已经通过身份验证,那么 Ajax 请求也将通过身份验证:标识用户的会话 cookie 将与 Ajax 请求一起发送,就像与任何其他请求一样。

(链接的问题是无关紧要的,因为它是在讨论对请求中的用户进行身份验证,而不是根据需要使用已经过身份验证的用户。)

【讨论】:

  • 感谢您的回答,我已经开始工作了! :) 出于某种原因,请求失败了,我认为这是因为 Ajax 请求没有使用经过身份验证的用户,但它实际上按预期和您解释的那样执行。唯一的“警告”是 jQuery 的 fail() 错误处理程序永远不会被调用,但这将是另一个问题......
  • @Daniel Roseman: 我尝试使用 'GET' 进行 Ajax 调用,并尝试在我的 python 视图函数中打印 request.user,但我只得到 SimpleLazyObject .我可以知道为什么我会变成这样。
【解决方案2】:

为此,您只需对 URL 进行 AJAX 调用,然后在处理 URL 的视图中添加 @login_required 装饰器。由于某种原因,django 项目现在已经关闭,所以I will send you to another place where you can get the information

但是,您需要注意一些事情,一是您需要添加 CSRF 令牌,二是您需要在 SETTINGS.PY 文件中进行一些更改。

我认为视频涵盖了所有内容,抱歉我无法将您发送到官方文档,因为它目前似乎已关闭。

【讨论】:

  • 感谢您的回答。我已经在使用@login_required。当我在不使用表单的情况下执行POST 时,我也在使用@csrf_exempt。 @DanielRoseman 的回答完全解决了我的疑惑!
猜你喜欢
  • 2021-05-01
  • 2019-12-01
  • 2015-07-29
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 2010-09-06
  • 2018-10-19
相关资源
最近更新 更多