Как получить имя сервера в Django для полного URL? - PullRequest
21 голосов
/ 21 мая 2009

Я использую шаблоны django для создания электронной почты. Я делаю что-то вроде этого:

msg_html = render_to_string('email/%s.html' % template_name, context)
msg = EmailMultiAlternatives(subject, msg_text, from_email, to_list)
msg.attach_alternative(msg_html, "text/html")
msg.content_subtype = "html"
msg.send()

В моем шаблоне используются шаблоны именованных URL, например: {% url_ll_параметр%}

Который работает нормально, за исключением того, что он будет отображать относительный URL, например: / App_name / url_node / параметр

Обычно этого достаточно, но поскольку это электронное письмо, мне действительно нужно, чтобы оно было полным URL-адресом с добавлением имени сервера, например: http://localhost:8000/app_name/url_node/parameter.

Как я могу это сделать? Как мне динамически получить имя сервера? (Я не хочу точно его кодировать).

Другой способ задать вопрос: как мне получить HttpServletRequest.getContextPath () на языке Java, но вместо этого в Django / Python?

спасибо

1 Ответ

16 голосов
/ 22 мая 2009

Использование сайтов приложения:

Site.objects.get_current().domain

Пример прямой из документации:

from django.contrib.sites.models import Site
from django.core.mail import send_mail

def register_for_newsletter(request):
    # Check form values, etc., and subscribe the user.
    # ...

    current_site = Site.objects.get_current()
    send_mail('Thanks for subscribing to %s alerts' % current_site.name,
        'Thanks for your subscription. We appreciate it.\n\n-The %s team.' % current_site.name,
        'editor@%s' % current_site.domain,
        [user.email])

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