У меня аналогичный вопрос, чем django cross-site reverse. Но я думаю, что не могу применить одно и то же решение.django cross-site reverse a url
Я создаю приложение, которое позволяет пользователям создавать свой собственный сайт. После заполнения формы регистрации пользователь должен быть перенаправлен на новую форму сообщения своего сайта. Что-то вдоль этих линий:
new_post_url = 'http://%s.domain:9292/manage/new_post %site.domain'
logged_user = authenticate(username=user.username, password=user.password)
if logged_user is not None:
login(request, logged_user)
return redirect(new_product_url)
Теперь я знаю, что «new_post_url» ужасно и делает ребенок плакать, поэтому мне нужно, чтобы обратить его в некотором роде. Я решил использовать django.core.urlresolvers.reverse, чтобы решить эту проблему, но только возвращает URL-адреса в моем домене, а не на вновь созданный сайт пользователя, поэтому для меня это не работает.
Итак, вы знаете лучший/более умный способ решить эту проблему?
это * домен: 9292 * часть URI, которая беспокоит меня. Я не знаю из первых рук, в какой домене будет работать сайт. В этом контексте current_site не обязательно имеет домен серверов, так как я запускаю приложение в разных установках (то есть: домен current_site может быть сохранен как «example.com», но я запускаю приложение в localhost: 8000). Мне нужно получить его динамически, поэтому вопрос – tutuca
, поэтому я не понял полностью, тогда вам просто нужно извлечь текущий домен, который вы можете использовать 'request.get_host()', который будет извлекать текущий домен и порт, но а не протокол, поэтому вам придется сказать, используете ли вы http: // или https: //. Надеюсь, что h elps – Bartek
Вы можете использовать 'request.is_secure()' для определения протокола. Таким образом, вы можете использовать строку: 'protocol = request.is_secure() и 'https' или 'http'' – JohnTESlade