Конвертировать django loader.render_to_string () в колбу для sendgrid - PullRequest
0 голосов
/ 21 мая 2019

Мы конвертируем наше приложение django во флешку, и я не могу найти что-то вроде django loader.render_to_string для фляги.

Есть предложения, которые я пробовал сделать render_template_string в колбе, но безрезультатно?

from django.template import loader
from sendgrid import SendGridAPIClient

def send_email:
    dt = {
        'name': xxxxxx,
        'application_name': xxxxxx,
    }

    email_template_text = loader.render_to_string("xxxxx.txt", dt)
    email_template_html = loader.render_to_string("xxxxx.html", dt)

    data = {
        "personalizations": [
            {
                "to": [
                    {
                        "email": xxxxx
                    }
                ],
                "subject": xxxxxx
            }
        ],
        "from": {
            "email": xxxxxxx
        },
        "content": [
            {
                "type": "text/plain",
                "value":  email_template_text
            },
            {
                "type": "text/html",
                "value": email_template_html
            }
        ]
    }
    sg = SendGridAPIClient(xxxxx)
    response = sg.send(data)

1 Ответ

0 голосов
/ 21 мая 2019

flask.render_template [ 1 ] должно быть достаточно для ожидаемого результата.

Не забудьте распаковать словарь для параметров контекста шаблона.

Кроме того, это должно быть сделано в контексте применения колбы. Где это может выполняться работником, ваш код будет выглядеть примерно так:

from flask import render_template, Flask

app = Flask(__name__)

with app.app_context():
    email_template_text = render_template("xxxxx.txt", **dt)
    email_template_html = render_template("xxxxx.html", **dt)
...