Django: Как изменить целевой домен перенаправления HttpResponseRedirect - PullRequest
0 голосов
/ 16 апреля 2011

Другой сайт перенаправляет пользователей на мой сайт.Django размещает два домена на моем сервере

 1. domain1.com
 2. domain2.com -> domain1.com/domain2 ( using ProxyPass ReverseProxyPass in apache)

На основании учетных данных, переданных в «запросе», переданном с помощью ссылающегося сайта, я знаю, куда перенаправить пользователя.Но у меня есть ограничение, что мне нужно использовать определенный метод представления, каждый раз имеющий httpredirectresponse(reverse('DemoVar_response')).Мой код выглядит примерно так:

app / views.py

 return HttpResponseRedirect(reverse('DemoVar_response',args=['Successful']))

app / urls.py

 url(r'^response/(?P<response>[\s\w\d-]+)/$','response', name='DemoVar_response')

В случае вызова по внутренней ссылке HttpResponseRedirect(reverse('DemoVar_response')) ведет к домену происхождения запроса, но поскольку я получаю запрос на перенаправление с другого сайта, HttpResponseRedirect возвращается к сайту по умолчанию.

Как я могу заставить HttpPresponseRedirect перейти на соответствующий домен?У меня есть информация о домене назначения во время перенаправления, но где мне его установить?

1 Ответ

3 голосов
/ 16 апреля 2011

HttpResponseRedirect просто берет URL.И reverse просто возвращает путь, то есть URL без домена.

Так что вы можете легко сделать:

import urlparse
domain = request.GET['domain'] # or however you are getting it
destination = reverse('DemoVar_response',args=['Successful'])
full_address = urlparse.urljoin(domain, destination)
return HttpResponseRedirect(full_address)

urlparse.urljoin просто объединяет два элемента URL вместе,убедитесь, что косые черты не дублируются и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...