回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图使<a href="https://django-easy-pdf.readthedocs.org/en/latest/api.html#rendering-functions" rel="nofollow">django-easy-pdf</a>工作,但收到以下错误:</p>
<pre><code>Environment:
Request Method: GET
Request URL: http://localhost:8001/lld/tesco-greenfield-datacenter-deployment/pdf/
Django Version: 1.8.2
Python Version: 2.7.6
Installed Applications:
('django_admin_bootstrapped',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'lld',
'registration')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')
Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/decorators.py" in _wrapped_view
22. return view_func(request, *args, **kwargs)
File "/home/vagrant/shared/RepeatableDesign/lld/views.py" in render_lld_pdf
79. {'document': document, 'sections': sections})
File "/usr/local/lib/python2.7/dist-packages/easy_pdf/rendering.py" in render_to_pdf_response
166. pdf = render_to_pdf(template, context, encoding=encoding, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/easy_pdf/rendering.py" in render_to_pdf
139. return html_to_pdf(content, encoding, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/easy_pdf/rendering.py" in html_to_pdf
65. link_callback=link_callback, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/document.py" in pisaDocument
89. encoding, context=context, xml_output=xml_output)
File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/document.py" in pisaStory
57. pisaParser(src, context, default_css, xhtml, encoding, xml_output)
File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/parser.py" in pisaParser
685. context.parseCSS()
File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/context.py" in parseCSS
498. self.css = self.cssParser.parse(self.cssText)
File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/w3c/cssParser.py" in parse
434. src, stylesheet = self._parseStylesheet(src)
File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/w3c/cssParser.py" in _parseStylesheet
522. src, stylesheetImports = self._parseAtImports(src)
File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/w3c/cssParser.py" in _parseAtImports
606. stylesheet = self.cssBuilder.atImport(import_, mediums, self)
File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/w3c/css.py" in atImport
874. return cssParser.parseExternal(import_)
File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/context.py" in parseExternal
372. cssFile = self.c.getFile(cssResourceName, relative=self.rootPath)
File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/context.py" in getFile
822. return getFile(self._getFileDeprecated(name, relative))
File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/util.py" in getFile
635. file = pisaFileObject(*a, **kw)
File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/util.py" in __init__
516. uri = uri.encode('utf-8')
Exception Type: AttributeError at /lld/tesco-greenfield-datacenter-deployment/pdf/
Exception Value: 'NoneType' object has no attribute 'encode'
</code></pre>
<p>根据这些:</p>
<p><a href="https://stackoverflow.com/questions/16617988/nonetype-object-has-no-attribute-encode">'NoneType' object has no attribute 'encode'</a></p>
<p><a href="https://stackoverflow.com/questions/21619298/nonetype-object-has-no-attribute-encode-error-in-django">'NoneType' object has no attribute 'encode' error in django</a></p>
<p>我已检查我的模型是否返回unicode对象:</p>
^{pr2}$
<p>这是我的观点:</p>
<pre><code>def render_lld_pdf(request, slug):
document = get_object_or_404(Document, slug=slug)
sections = \
get_list_or_404(Section.objects.filter
(associated_document__startswith=document.slug))
return render_to_pdf_response(request, 'lld/print_lld.html',
{'document': document, 'sections': sections},
encoding=u'utf-8')
</code></pre>
<p>我不知道怎么解决这个问题?在</p>
<p>编辑:在<code>print document</code>和<code>print type(document)</code>中添加可以得到:</p>
<pre><code>Greenfield Datacenter Deployment
<class 'lld.models.Document'>
No handlers could be found for logger "xhtml2pdf"
</code></pre>