Export django pdf

I want to create a PDF file that will display the output of my request in a table format, for example:

query = ModelA.objects.filter(p_id=100)

class ModelA(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=200)
    p_id = models.IntegerField()
    description = models.TextField()

I need to show the values ​​for name, descriptionand pidin the generated PDF.

+5
source share
4 answers

As mentioned by other people, the best way to do this is to create a template and then convert the result using one of the many libraries to PDF. This method gives you the usual level of control over your templates, for example using tags.

ReportLab/Pisa, , , , CSS2 .

wkhtmltopdf, WebKit. , -, , , webkit, CSS3, WebKit.

django-wkhtmltopdf, render_to_pdf Django render_to_response.

: .

Update

CBV, ( , ) .

. quickstart docs , . , PDFTemplateView , .

:

from django.shortcuts import render_to_response
from wkhtmltopdf import render_to_pdf

def pdf(request):
    context.update({'objects': ModelA.objects.filter(p_id=100)})

    kwargs = {}
    if request.GET and request.GET.get('as', '') == 'html':
        render_to = render_to_response
    else:
        render_to = render_to_pdf
        kwargs.update(dict(
            filename='model-a.pdf',
            margin_top=0,
            margin_right=0,
            margin_bottom=0,
            margin_left=0))

    return render_to('pdf.html', context, **kwargs)

? as = html , . , .

, objects , , . PDF , - PDF , , , .

, PDF , render_to_pdf kwargs.

+9

HTML , , xhtml2pdf, pdf.

, ReportLab, PDF. , HTML, , , pisa, pdf.

+2

wkhtmltopdf python-pdfkit

, , . javascript css

0

django : Django-pdf-generator.

views.py :

from pdf_generator.renderers import render_pdf

def get_my_pdf(request):
    """
    returns a pdf file named my_awesome_pdf.pdf using awesome_pdf.html template
    """
    return render_pdf('my_awesome_pdf', request, 'awesome_pdf.html', context={})

, .

0

All Articles