Django - 从View重定向到另一个域

时间:2018-05-16 13:59:44

标签: django django-views

我正在尝试从INSERT INTO table2 (code, alternatecode) SELECT t11.code, t12.code FROM table1 t11 INNER JOIN table1 t12 ON t12.cat = t11.cat AND t12.group = t11.group AND t12.code <> t11.code; 重定向到google.com。 stackoverflow上有几个答案,以下是有效的:

mydomain.com

return HttpResponseRedirect('google.com')

但事实并非如此。这只是将页面重定向到自身并附加return redirect('google.com') 部分,所以它出现如下:

google.com

当然是什么引发了404 我的观点现在如下所示:

www.mydomain.com/google.com

任何人都能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:1)

他们的回答在某种意义上是正确的:你做了重定向。但现在Web浏览器需要执行重定向。

通常假设未添加两个连续斜杠的路径为 local :这意味着保持在同一个域中。

如果您想要转到另一个域,则需要添加协议,或至少两个连续斜杠(以便重用协议):

return HttpResponseRedirect('https://google.com')  # use https

或:

return HttpResponseRedirect('//google.com')  # "protocol relative" URL

毕竟你只返回浏览器的重定向答案。浏览器可以决定不遵循重定向(某些浏览器会这样做),或者可以以他们喜欢的任何方式解释它(尽管这意味着浏览器并没有真正做到我们期望它做的事情)。我们无法强制浏览器遵循重定向。