预期的 str、字节或操作系统.PathLike 对象,而不是 pisaContext



我正在尝试通过电子邮件发送PDF:

def render_to_pdf(template_src, context_dict={}):
template = get_template(template_src)
html = template.render(context_dict)
result = BytesIO()
pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
if not pdf.err:
return pdf
return None

在我看来:

pdf = render_to_pdf('expenses/pdf_report.html', data)
mail.attach_file(pdf)
mail.send()

我收到此错误:

预期的 str、字节或操作系统。PathLike 对象,而不是 pisaContext

如何获取 str 或字节而不是pisaContext

尝试下面的代码。 未经过测试,但它应该可以工作

from django.template.loader import render_to_string
def render_to_pdf(template_src, context_dict={}):
html = render_to_string(template_src, context_dict)
result = BytesIO()
pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
if not pdf.err:
return result.getvalue()
return None

参考: https://github.com/codingforentrepreneurs/Guides/blob/master/all/Render_to_PDF_in_Django.md

最新更新