我使用 Django 1.8、reportlab 和 xhtml2pdf、html5lib、pypdf,视图如下所示(https://stackoverflow.com/a/1377652/4496057)
def render_to_pdf(template_src, context_dict, request):
template = get_template(template_src)
context = Context(site_pages(request))
html = template.render(context)
result = StringIO.StringIO()
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result)
if not pdf.err:
return HttpResponse(content=result.getvalue(), content_type='application/pdf')
return HttpResponse('We had some errors<pre>%s</pre>' % escape(html))
我收到以下错误更新(整个回溯):
Internal Server Error: /system/MNE/1212/doctor/summary-pdf/8/123123123
Traceback (most recent call last):
File "/home/vagrant/sat/lib/python2.7/site-packages/django/core/handlers/base.py", line 164, in get_response
response = response.render()
File "/home/vagrant/sat/lib/python2.7/site-packages/django/template/response.py", line 158, in render
self.content = self.rendered_content
File "/home/vagrant/sat/lib/python2.7/site-packages/django/template/response.py", line 135, in rendered_content
content = template.render(context, self._request)
File "/home/vagrant/sat/lib/python2.7/site-packages/django/template/backends/django.py", line 72, in render
context = make_context(context, request)
File "/home/vagrant/sat/lib/python2.7/site-packages/django/template/context.py", line 272, in make_context
context.push(original_context)
File "/home/vagrant/sat/lib/python2.7/site-packages/django/template/context.py", line 55, in push
return ContextDict(self, *args, **kwargs)
File "/home/vagrant/sat/lib/python2.7/site-packages/django/template/context.py", line 20, in __init__
super(ContextDict, self).__init__(*args, **kwargs)
ValueError: dictionary update sequence element #0 has length 5918; 2 is required
此错误似乎特定于 HTTPResponse,其他 stackoverflow 帖子没有帮助