gpt4 book ai didi

python - django 重定向 ajax 请求但保持 "is_ajax"

转载 作者:行者123 更新时间:2023-11-28 23:01:22 24 4
gpt4 key购买 nike

问题:如何重定向到 Django 中的页面,但将其“伪造”为 ajax 请求?

所以我有一个发布数据请求 - 通过 ajax (jQuery) 完成。这被发送到我的 django 服务器,它添加数据(或删除它!),然后以“干得好,你添加了一些数据”页面响应。

这个成功页面开始于:

{% extends request.is_ajax|yesno:"base_ajax.htm,base.htm" %}

如果请求不是 ajax 请求,这是添加各种 header 的好方法,如果是则忽略 header 。我添加了这个,所以该网站可以在使用和不使用 javascript 的情况下工作(我们还需要这样做吗?)

然后我添加了一个 post-redirect-get(也就是说, View 的 post 部分不是return render_to_response而是return redirect('url here')

现在的问题是重定向忘记了初始请求是 ajax 请求。所以我总是最终将整个页面(标题和所有内容)加载到一个 div 中,这不是我想要的。

所以,我希望能够告诉重定向它应该伪装成一个 ajax 请求

我该怎么做?

更新:对于在“ future (使用喷气背包!)”中阅读本文的任何人,重定向都不会携带标题信息 - 参见 https://www.rfc-editor.org/rfc/rfc2616#section-7.1

最后,我去做了:

return redirect(self.success_redirect + '/' + str(int(request.is_ajax()))) 

然后,对于我重定向到的 View :

url(r'^editStorySuccess/(?P<ajax>\d+)$',
showAfterCheckingAjax,
{
'template':'stories/editStorySuccess.html'
},
'editStorySuccess'
),

在 showAfterCheckingAjax View 中我刚刚:

if int(ajax):
request.META['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest'
return render_to_response(template, {'user':request.user},
context_instance=RequestContext(request))

这对我有用!

最佳答案

创建一个不同的 URL,它呈现与您现在重定向到的 URL 相同的 View ,但带有一个额外的 GET 参数。您可以使用此 GET 参数修改用于提供 View 的模板。无论哪种方式,重定向都被视为新请求,因此您必须执行某些操作以将此附加信息传递给此请求。

关于python - django 重定向 ajax 请求但保持 "is_ajax",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11076377/

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