Django:在POST之后我需要做HttpResponseRedirect来呈现一个简单的字符串吗?

时间:2010-03-15 18:06:09

标签: django

我有一个移动应用程序向Django网站发出POST请求。

我想在应用发出POST请求后返回一个简单的字符串(不是基于模板的页面),说“成功”或“失败”(编辑:加上一些额外的信息)视情况而定。

****编辑:请注意,不是一个浏览器发出请求,它是一个应用程序(所以没有涉及BACK按钮),我想做一些额外的应用程序端工作根据POST请求的结果 - 基本上我想要提供一些信息。*****

但是我知道在Django中发出POST请求之后你应该做一个HttpResponseRedirect。但是,我是否真的需要重定向到另一个页面并编写一个新函数来处理它,所有都输出一个字符串?

如果是这样,我如何在HttpResponseRedirect中传递应用程序的成功/失败状态,因为它只应该接受一个参数?

谢谢!

4 个答案:

答案 0 :(得分:2)

  

我真的需要重定向到   另一页并写一个新功能   处理它,所有输出一个字符串?

如果他们在浏览器上点击“返回”,您会希望您提供了重定向后发布。

如果您没有重定向,并且在浏览器上点击“返回”,则他们可以重新发布该表单。您可能不想处理这个问题,因此在发布后重定向会更容易。

  

如何在HttpResponseRedirect中传递应用程序的成功/失败状态

请参阅:http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponse.status_code

修改

如果没有浏览器,则没有后退按钮。由于没有后退按钮,因此无需重定向。

  

“在Django的POST请求之后你是   应该做一个HttpResponseRedirect“

没有任何意义。你不是“应该”去做的。 Django 帮助你做到了。

作为Web服务的一部分,您不会在POST后重定向。

您必须在POST后重定向,以帮助人们使用浏览器

答案 1 :(得分:2)

如果这是用户生成的POST(标准网站),那么S. Lott的建议是正确的。

但是如果你作为API调用进行POST,那么只需返回字符串。在移动设备上,客户为每个HTTP请求付费。

答案 2 :(得分:0)

正如S.Lott所说,是的,你确实想要重定向。

但是我不确定在重定向后显示“应用程序的成功/失败状态”是什么意思。重定向只应在POST成功时发生;否则,您将通过任何验证重新显示表单错误显示。

答案 3 :(得分:0)

有javascript吗?那么也许你可以做一个ajax请求,只需在结果出现后更改内容。这也应该可以防止“返回”出现问题而您不需要重定向。