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

时间:2019-01-25 03:38:20

标签: django pdf django-views weasyprint

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

我能够在浏览器中生成pdf,但无法设置打开/另存为对话框弹出功能。我知道我必须将content-disposition设置为等于附件(我认为),但是我为此很努力。

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

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

1 个答案:

答案 0 :(得分:0)

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

Class ArticlePrintView(WeasyTemplateResponseMixin,ArticleView):

pdf_filename = 'my-pdf.pdf'

如果您需要动态确定文件名,则可以覆盖get_pdf_filename方法来做到这一点:

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