我正在编写一个 Django 函数,它接受一些用户输入,并为用户生成一个 pdf。但是,生成 pdf 的过程非常密集,我会收到很多重复的请求,所以我想将生成的 pdf 存储在服务器上并在生成它们之前检查它们是否已经存在。
问题是 django-wkhtmltopdf(我用于生成)旨在直接返回给用户,我不确定如何将其存储在文件中。
我有以下内容,可用于在 /pdf 处返回 pdf:
网址.py
urlpatterns = [
url(r'^pdf$', views.createPDF.as_view(template_name='site/pdftemplate.html', filename='my_pdf.pdf'))
]
Run Code Online (Sandbox Code Playgroud)
视图.py
class createPDF(PDFTemplateView):
filename = 'my_pdf.pdf'
template_name = 'site/pdftemplate.html'
Run Code Online (Sandbox Code Playgroud)
所以这可以很好地创建一个pdf。我想要的是从另一个视图调用该视图并保存结果。这是我到目前为止所得到的:
#Create pdf
pdf = createPDF.as_view(template_name='site/pdftemplate.html', filename='my_pdf.pdf')
pdf = pdf(request).render()
pdfPath = os.path.join(settings.TEMP_DIR,'temp.pdf')
with open(pdfPath, 'w') as f:
f.write(pdf.content)
Run Code Online (Sandbox Code Playgroud)
这将创建 temp.pdf 并且大约是我期望的大小,但文件无效(它呈现为一个完全空白的页面)。
有什么建议?