View mixin and template filters for PDF creation from the HTML-template.
Project description
View mixin and template filters for PDF creation from the HTML-template.
Detailed documentation is in the “docs” directory.
Quick start
Add “weasy_pdf” to your INSTALLED_APPS setting like this:
INSTALLED_APPS = ( ... 'weasy_pdf', )
Help functions: safety_get_attribute(), safety_parse_dict(), format_date() (see utils.py)
Create data-object. When using the safety_get_attribute() function do not forget to join the related tables (prefetch_related, select_related):
class PDFDataObject: def __init__(self, data_obj: MyModel): get = safety_get_attribute self.data_obj = data_obj self.first_name = get(data_obj, 'first_name') ...
Prepare PDF template. Use built-in template filters: times, parse_dict:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> {% load static %} {% load weasy_pdf %} <link rel="stylesheet" href="{% static '/styles/pdf.css' %}"> <title>Title</title> <meta name="description" content="Description"> <meta name="author" content="Author"> </head> <body> <span>{{ data_object.first_name }}</span> ... </body> </html> <!-- Filters usage: {% for i in 8|times %} <td colspan="2"></td> {% endfor %} <td colspan="5">{{ data_object|parse_dict:'0__NAME' }}</td> -->
Prepare view:
class PDFView(WeasyPDFViewMixin): template_name = 'pdf.html' file_name = 'my_pdf.pdf' def get_object(self) -> Any: passport = get_object_or_404(Passport, pk=self.kwargs.get('pk')) return PDFDataObject(passport)
Example
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
btc-weasy-pdf-0.1.tar.gz
(4.2 kB
view hashes)