Правильный способ передать ссылку на шаблон электронной почты в Django - PullRequest
0 голосов
/ 25 июня 2018

Поэтому я хочу добавить ссылку на определенную страницу моего приложения в шаблоне своей электронной почты, но эта страница изменяется в зависимости от различных значений, которые я передаю своему шаблону через свое представление, поэтому я попытался передать имяURL в шаблон, как показано ниже, но это не работает.Может кто-нибудь показать мне правильный способ сделать что-то подобное?

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>

1 Ответ

0 голосов
/ 25 июня 2018

Вот как я обычно это делаю.Создайте свой URL в 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>

Я не тестировал этот код.может потребоваться некоторая настройка.

...