Django - Перенаправление на другой домен из View - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь перенаправить с mydomain.com на google.com.Есть несколько ответов о стеке потока, которые предполагают, что работает следующее:

return HttpResponseRedirect('google.com')

или

return redirect('google.com')

Но это не так.Это просто перенаправляет страницу на себя и добавляет часть google.com, чтобы она выглядела следующим образом:

www.mydomain.com/google.com

Что бросает 404, конечно .. Мой взгляд теперь выглядит следующим образом:

class MyView(TemplateView):

    def get(self, request, *args, **kwargs):
        return HttpResponseRedirect('google.com')

Может кто-нибудь подсказать мне, что я делаю не так?

1 Ответ

0 голосов
/ 16 мая 2018

Они в некотором смысле верны: вы делаете перенаправление. Но теперь веб-браузер должен выполнить перенаправление.

Обычно пути, которые не начинаются с двух последовательных слешей, предполагаются равными local : это означает, что остается в том же домене.

Если вы хотите перейти в другой домен, вам нужно добавить протокол или хотя бы две последовательные косые черты (например, для повторного использования старого протокола):

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

или

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

В конце концов вы только возвращаете ответ перенаправления в браузер . Браузер может решить не следовать перенаправлению (некоторые браузеры это делают) или может интерпретировать его любым способом, который им нравится (хотя это означает, что браузер на самом деле не делает то, что мы можем ожидать от него). Мы не можем заставить браузер следовать перенаправлению.

...