我想使用Django 1.9文档中的以下方法生成PDF:https://docs.djangoproject.com/ja/1.9/howto/outputting-pdf。
这是我的网址模式(我不需要任何特别的内容,只是一个不同的网址名称
urlpatterns = [
url(r'^people/$', PeopleTemplate.as_view(), name='people'),
url(r'^people/pdf/$', some_view),
]
def some_view(request):
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="example.pdf"'
p = canvas.Canvas(response)
p.drawString(100, 100, "Hello world.")
p.showPage()
p.save()
def get(self, request, *args, **kwargs):
context = locals()
context['response'] = self.response
context['p'] = self.p
return render_to_response(self.response_template, context, context_instance=RequestContext(request))
我试图使用get方法。当我点击/ pdf时,这会提示输出pdf,但不包含任何数据 - 只是一个空白页面。当您点击/出席/ pdf网址时,如何获取此网址/出席/中显示的数据以显示在pdf页面上?
答案 0 :(得分:1)
我认为你需要:
现在您的代码将模板呈现为html,将“application / pdf”内容类型添加到标头并返回正常的html页面。
你需要像PDFTemplateView这样的东西。可以使用包django-easy-pdf或django-wkhtmltopdf。
UPD:
def some_view(request):
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="example.pdf"'
p = canvas.Canvas(response)
// simple but visual result is not pretty at all
for i, obj in enumerate(People.objects.all()):
p.drawString(100, 50*(i+1), str(obj))
p.showPage()
p.save()
def get(self, request, *args, **kwargs):
context = locals()
context['response'] = self.response
context['p'] = self.p
return render_to_response(self.response_template, context, context_instance=RequestContext(request))