我有一个移动应用程序向Django网站发出POST请求。
我想在应用发出POST请求后返回一个简单的字符串(不是基于模板的页面),说“成功”或“失败”(编辑:加上一些额外的信息)视情况而定。
****编辑:请注意,不是一个浏览器发出请求,它是一个应用程序(所以没有涉及BACK按钮),我想做一些额外的应用程序端工作根据POST请求的结果 - 基本上我想要提供一些信息。*****
但是我知道在Django中发出POST请求之后你应该做一个HttpResponseRedirect。但是,我是否真的需要重定向到另一个页面并编写一个新函数来处理它,所有都输出一个字符串?
如果是这样,我如何在HttpResponseRedirect中传递应用程序的成功/失败状态,因为它只应该接受一个参数?
谢谢!
答案 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请求,只需在结果出现后更改内容。这也应该可以防止“返回”出现问题而您不需要重定向。