Wkhtmltopdf-django динамический шаблон для рендеринга
Есть ли способ генерировать PDF динамически, с получением содержимого из базы данных?
Моя цель - позволить моим пользователям создавать собственный дизайн PDF из редактора wysiwyg.
Это моя модель
class DocumentService(models.Model):
name = models.CharField(max_length=60, blank=True)
html_content = models.TextField(blank=True)
Я использую django-wkhtmltopdf для рендеринга html в PDF.
response = PDFTemplateResponse(
request=request,
template="document.html",
filename=filename,
context=data,
show_content_in_browser=True,
cmd_options=cmd_options,
)
Как я могу перенести содержимое этой записи в мой PDF?
document = DocumentService.objects.get(pk=1)
document.html_content # <-- this content
Содержание HTML должно быть примерно таким
<html>
<body>
<p>
<strong>Date: </strong> {{date}}
<strong>User: </strong> {{user.name}}
<strong>Email: </strong> {{user.email}}
<strong>Info: </strong> {{user.info}}
...
</p>
</body>
</html>
Просто используйте render_to_string() для отображения данных следующим образом
from django.template.loader import render_to_string
document = DocumentService.objects.get(pk=1)
temp = render_to_string("document.html", {'data':document.html_content})
response = PDFTemplateResponse(
request=request,
template=temp,
filename=filename,
context=data,
show_content_in_browser=True,
cmd_options=cmd_options,
)
и внутри вашего document.html вы должны добавить следующее
<body>
{{data|safe}} <!--- Use safe if you want to render html --->
</body>