我想生成django模板/视图的PDf;使用模板标签等
来自django-wkhtmltopdf的文档:
from django.conf.urls.defaults import url, patterns
from wkhtmltopdf.views import PDFTemplateView
urlpatterns = patterns('',
url(r'^pdf/$', PDFTemplateView.as_view(template_name='my_template.html',
filename='my_pdf.pdf'), name='pdf'),
)
或者他们在你看来说:
from wkhtmltopdf.views import PDFTemplateView
class MyPDF(PDFTemplateView):
filename = 'my_pdf.pdf'
template_name = 'my_template.html'
cmd_options = {
'margin-top': 3,
}
如果这是我的观点:
def download_report(request):
vends = Vends.objects.all()
return render(request, 'report_template.html', {'vends':vends})
如何生成此VIEW的报告?不只是模板,因为那会没用?
答案 0 :(得分:4)
您可以使用PDFTemplateRespone而不是render_to_response。
from wkhtmltopdf.views import PDFTemplateResponse
然后你可以这样做:
def pdf(request, pk):
context = RequestContext(request)
template = 'test.html'
context = {
'variable1': variable1,
'variable1': variable1,
'variable1': variable1,
'variable1': variable1
}
return PDFTemplateResponse(request=request, cmd_options={'disable-javascript':True}, template=template, context=context)
答案 1 :(得分:3)
看起来我已经晚了3年:)我在这里放了一个工作代码示例,作为未来需求的参考:
<强> urls.py 强>
# here you must import MyPDF from [your-app-name].views
urlpatterns = [
url(r'^pdf/$', MyPDF.as_view(template_name='my_template.html',
filename='my_pdf.pdf'), name='pdf'),
]
<强> views.py 强>
from wkhtmltopdf.views import PDFTemplateView
class MyPDF(PDFTemplateView):
def get_context_data(self, **kwargs):
context = super(MyPDF, self).get_context_data(**kwargs)
context['foo'] = 'BAR'
return context
<强> my_template.html 强>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<h1>{{ foo }}</h1>
</body>
</html>
答案 2 :(得分:1)
遇到和你一样的问题,让所有东西都能正常渲染CSS + JS,但是我也不知道如何渲染或传递数据来渲染模板然后转换。
如果有人能给出一个良好指示的提示或指示,那就太棒了。