Py学习  »  Django

如何将内容配置作为django_weasyprint包的附件来实现?

ares314 • 4 年前 • 698 次点击  

使用 django_weasyprint (基于类的视图实现)生成pdf的包。

我可以在浏览器中生成pdf,但在设置“打开/另存为”对话框弹出功能时遇到问题。我知道我必须把内容配置等同于附件(我想),但我正在努力做到这一点。

from django.conf import settings
from django.views.generic import DetailView

from django_weasyprint import WeasyTemplateResponseMixin


class ArticleView(DetailView):
    # vanilla Django DetailView
    model = Article
    template_name = 'article_detail.html'


class ArticlePrintView(WeasyTemplateResponseMixin, ArticleView):
    # output of DetailView rendered as PDF
    pdf_stylesheets = [
        settings.STATIC_ROOT + 'css/app.css',
    ]

我想让“打开/另存为”对话框自动弹出。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43823
 
698 次点击  
文章 [ 1 ]  |  最新文章 4 年前
solarissmoke
Reply   •   1 楼
solarissmoke    5 年前

看看 code for the WeasyTemplateResponseMixin -有一个选项可以设置 pdf_filename 在课堂上,如果你这样做,那么 Content-Disposition 将使用此文件名设置头,以便浏览器打开该文件的下载/保存对话框。像这样的:

类ArticlePrintView(WeasyTemplateResponseMixin,ArticleView):

pdf_filename = 'my-pdf.pdf'

如果需要动态确定文件名,则可以重写 get_pdf_filename 方法:

def get_pdf_filename(self):
    return 'some-file.pdf'