0

使用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',
    ]

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

4

1 回答 1

0

查看代码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'
于 2019-01-25T08:11:41.913 回答