首页 > 解决方案 > 将 django loader.render_to_string() 转换为用于 sendgrid 的烧瓶

问题描述

我们正在将我们的 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)

标签: pythondjangoflasksendgrid

解决方案


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)

推荐阅读