1

我是 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

4

2 回答 2

3

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

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

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

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

于 2013-03-07T16:33:58.157 回答
0

了解“网址”

你写

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

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

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

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

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

于 2016-05-26T08:34:29.723 回答