2012-04-27 36 views
1

另一个像这样的问题被问到了,但我不喜欢这个答案(事实上它并没有真正回答这个问题。第一个地方):Can any one explain how can i pass arg or kwargs from redirect to another view?我怎样才能重定向到另一个应用程序中的视图,并仍然传递参数(Django)

我有一个视图,需要重定向到另一个视图(在另一个应用程序),仍然发送一个参数。目前我有:

return redirect('/projects/', login_error=error) 

哪个不起作用(重定向发生,但参数不通过)。是否可以使用redirect()来做到这一点?文档没有任何内容。

不过,我也试过指视图,而不使用网址:

return redirect('projects.views.list_all', login_error=error) 

但是,这并不工作。

回答

1

redirect返回一个HTTP重定向到提供的URL - 也就是说,浏览器收到一个 30x响应并启动一个新的请求。

为了保持状态两个请​​求,您可能需要设置会话变量(根据对方的回答),或提供查询参数,如:

return redirect('/projects/?login_error=error') 

然后,您将需要处理传入request.GET参数在另一个视图中。

+0

我明白了,这样做更有意义。然而,文档确实说如果您引用视图本身(而不是URL),则可以安全地传递参数(来源:https://docs.djangoproject.com/en/1.4/topics/http/shortcuts/# django.shortcuts.redirect)。我如何参考当前应用程序之外的视图? – n0pe 2012-04-27 00:52:57

+0

视图名称仍然用于获取URL - kwargs是URL的正则表达式参数,而不是视图的方法参数。 – Hamish 2012-04-27 00:58:50

+0

明白了,谢谢。毕竟,我想我正在使用会话变量。 – n0pe 2012-04-27 01:00:41

相关问题