首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django:如何重定向post并传递post数据

Django:如何重定向post并传递post数据
EN

Stack Overflow用户
提问于 2010-06-11 23:40:34
回答 8查看 93.9K关注 0票数 85

在处理Django views.py文件中的POST请求时,我有时需要将其重定向到另一个url。我重定向到的这个url是由同一个Django views.py文件中的另一个函数处理的。

我有两个web应用程序(让我们称它们为AppA和AppB),它们接受用户在文本字段中输入的数据。AppA和AppB需要不同类型的数据。当发生这种情况时,我希望将它们重定向到AppB并显示AppB结果,或者至少用他们输入到AppA中的数据填充结果。

另外:

  • 客户端需要两个单独的应用程序,而不是将它们合并为一个。
  • 我无法显示代码,因为它属于客户端。

更新2:我认为KISS是这里最好的原则。我已经将这两个应用程序合并为一个,这使得事情变得更简单和更健壮;我应该能够说服客户这也是最好的方法。谢谢你所有的反馈。如果我要像上面描述的那样维护两个应用程序,那么我认为会话将是实现这一点的方法-感谢Matthew J Morrison的建议。感谢Dzida,他的评论让我开始思考设计和简化。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-06-12 00:37:39

如果你遇到这样的问题,你可能需要修改你的设计。

这是的一个限制,POST数据不能与重定向一起使用。

你能描述一下你试图实现的目标吗?也许我们可以想出一些巧妙的解决方案。

如果你不想像Matthew建议的那样使用会话,你可以在GET中传递POST参数到新页面(考虑一些限制,比如安全性和查询字符串中GET参数的最大长度)。

更新你的更新:)你有两个web应用程序,而这些应用程序使用一个views.py,这对我来说很奇怪(我说的对吗?)无论如何,请考虑将数据从POST传递到正确的视图(当然,以防数据不敏感)。

票数 61
EN

Stack Overflow用户

发布于 2010-06-11 23:49:28

我认为我可能会如何处理这种情况,将post数据保存在会话中,然后在不再需要它时将其删除。这样我就可以在重定向后访问原始的帖子数据,即使那个帖子已经消失了。

这会对你想做的事情起作用吗?

以下是我所建议的代码示例:(请记住,这是未经测试的代码)

代码语言:javascript
复制
def some_view(request):
    #do some stuff
    request.session['_old_post'] = request.POST
    return HttpResponseRedirect('next_view')

def next_view(request):
    old_post = request.session.get('_old_post')
    #do some stuff using old_post

还有一件事要记住..。如果你这样做的同时也在上传文件,我不会这样做。

票数 59
EN

Stack Overflow用户

发布于 2010-09-27 16:32:34

您需要使用HTTP 1.1 Temporary Redirect (307)。

不幸的是,Django redirect()HTTPResponseRedirect (永久)只返回301或302。你必须自己去实现它:

代码语言:javascript
复制
from django.http import HttpResponse, iri_to_uri
class HttpResponseTemporaryRedirect(HttpResponse):
    status_code = 307

    def __init__(self, redirect_to):
        HttpResponse.__init__(self)
        self['Location'] = iri_to_uri(redirect_to)

另请参阅django.http module

编辑:

在最近的Django版本中,将iri_to_uri导入更改为:

代码语言:javascript
复制
from django.utils.encoding import iri_to_uri
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3024168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档