【问题标题】:django render_to_response redirect to another viewdjango render_to_response 重定向到另一个视图
【发布时间】:2013-03-07 16:24:53
【问题描述】:

我是 django 的新手 我有一个 render_to_response 将用户重定向到好的 url。但是在浏览器中,url 没有改变,所以它被坏视图处理了......

在这里

return render_to_response('newworkflow.html/',    
{'form':form,},context_instance=RequestContext(request))

这是我的网址配置:

url(r'newworkflow/$','access_mgmt.views.newworkflowform'),
url(r'newuser/$','access_mgmt.views.newuser'),

曾经在newworkflow.html 上,我有一个表单,它不是由好视图处理的,实际上它是由这个render_to_response 所在的那个处理的。

是否可以同时更改浏览器中的 URL 与 render_to_response

我使用 render_to_response 因为在(源和目标)上我都激活了 csrf_token

【问题讨论】:

  • 很难理解你的问题是什么,显示你的url configuration和你的views的相关部分,并详细解释你的问题。
  • 我会更新问题
  • 我理解你的问题,但我无法理解你的代码流,你能把你的完整代码放在视图中

标签: python django django-views


【解决方案1】:

HttpResponseRedirect 可用于将客户端重定向到不同的 URL。

render_to_response "使用给定的上下文字典渲染给定的模板,并返回带有渲染文本的 HttpResponse 对象。"

如果客户端将忽略响应的正文并转到不同的 URL,则将模板呈现为响应是没有意义的。

相反,将客户端重定向到适当的 URL,然后从与该 URL 关联的视图中提供呈现的响应。

【讨论】:

  • 好的,即使我在源页面和目标(我需要传递一些参数的目标)上激活了 csrf_token,因为这两个页面都是表单
  • 您希望通过将响应呈现给客户端并在同一步骤中将其重定向到另一个 URL 来实现什么?
  • 我想保留之前填写的表格的信息,以便在激活这个著名的 csrf_token 的情况下转到第二个表格。如果我使用 httpresponse 我在第二个表单上有一个 csrf_token 错误
  • 通常推荐的 POST 行为是接受发布的数据,然后重定向。它甚至在django tutorial 中。听起来你做错了什么。
【解决方案2】:

了解“网址”

你写

是否可以同时更改浏览器中的 URL 与 render_to_response

我认为您对“URL”实际上是什么的理解过于模糊。 如果浏览器请求 URL X,它将考虑您发送的任何内容 成为 URL X 的响应,无论它是什么。

因此,如果服务器(您!)发送实际的 HTML 内容,URL 将 永远不要在浏览器中更改。

要在浏览器中更改 URL,您需要发送重定向响应 (使用 Django 的HttpResponseRedirect)到浏览器。 浏览器将获取其中包含的 URL Y 并使用 URL Y 向服务器发出 another 请求——然后 也显示在浏览器的地址栏中。

然后服务器将发送Y 的 HTML 内容。 您不能在一个请求中同时拥有这两个步骤:重定向发送内容。

【讨论】:

    猜你喜欢
    • 2020-01-01
    • 2018-10-26
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2012-02-10
    相关资源
    最近更新 更多