我正在使用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 url_name参数%}
哪个工作正常,除了它会呈现一个相对网址,如: / APP_NAME / url_node /参数
通常这就够了,但由于这是一封电子邮件,我真的需要它是一个完整的网址 - 服务器名称前置,如: http://localhost:8000/app_name/url_node/parameter
我该怎么做?如何动态获取服务器名称? (我不想对它进行硬编码)。
另一种询问方式:如何获取HttpServletRequest.getContextPath()ala Java,而不是Django / Python?
感谢
答案 0 :(得分:16)
使用网站应用程序:
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])
# ...