因此,我想在我的电子邮件模板中添加指向应用程序特定页面的链接,但是此页面会根据我通过视图传递给模板的不同值而更改,因此我尝试传递的名称像下面这样进入模板,但无法正常工作。有人可以告诉我正确的方法来做这样的事情吗?
views.py
html_message = loader.render_to_string(
'catalog/email_template.html',
{'body_message': body_message,
'user': user_obj_to.get_full_name(),
'link': link
},
)
send_mail(
email_subject,
body_message,
sender_email,
[receiver_email],
fail_silently=False,
html_message=html_message
)
email_template.html
<p style="font-family: sans-serif; font-size: 20px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Dear {{ user }}</p>
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{ body_message }} <a href="{% url '{{ link|safe }}' %}">link</a></p>
答案 0 :(得分:0)
这是我通常的做法。在View.py中创建您的网址,并将其传递到html模板。
#Get the template
htmly = get_template('email_templates/welcome.html')
#create your url here
my_url = some_url_maker_function()
#create a context
d = {'name': form.cleaned_data['first_name'] + " " + form.cleaned_data['last_name'],
'username': form.cleaned_data['username'], 'my_url': my_url}
subject, from_email, to = 'Subject line', settings.EMAIL_HOST_USER, form.cleaned_data['email']
#pass the context to html template
html_content = htmly.render(d)
msg = EmailMultiAlternatives(subject, html_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.send()
在html模板中,您可以拥有它。
<p style="font-family: sans-serif; font-size: 20px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Dear {{ user }}</p>
<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">{{ body_message }} <a href="{% url '{{ my_url }}' %}">link</a></p>
我尚未测试此代码。可能需要一些调整。