我正在尝试使用此库创建一个pdf,以实现最简单的de docs示例
使用url并直接从模板中渲染,如下所示
url(r'^pdf/$', PDFTemplateView.as_view(template_name='my_template.html',
filename='my_pdf.pdf'), name='pdf'),
这是模板文件的html
<!DOCTYPE html>
<html>
<head>
<title>Hello Wold</title>
</head>
<body>
<p>My First Pdf</p>
</body>
</html>
但是当我尝试网址时 错误是这个
/ pdf /中的AttributeError'NoneType'对象没有属性'endswith'
我该如何解决呢?
这是Traceback
回溯:文件 “/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py” 在get_response中 139. response = response.render()文件“/usr/local/lib/python2.7/dist-packages/django/template/response.py” 在渲染中 105. self.content = self.rendered_content文件“/usr/local/lib/python2.7/dist-packages/wkhtmltopdf/views.py”in rendered_content 123. delete =(not debug)File“/usr/local/lib/python2.7/dist-packages/wkhtmltopdf/views.py”in render_to_temporary_file 78. content = make_absolute_paths(content)文件“/usr/local/lib/python2.7/dist-packages/wkhtmltopdf/utils.py”in make_absolute_paths 151.如果不是x ['root']。endswith('/'):
异常类型:/ pdf / Exception值中的AttributeError:'NoneType' 对象没有属性'endswith'
环境:
请求方法:GET
Django Version: 1.6.2
Python Version: 2.7.3
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'south',
'rest_framework',
'cian',
'django_extensions',
'wkhtmltopdf')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
这是django-wkhtmltopd错误的屏幕截图
答案 0 :(得分:4)
发生此错误是因为wkhtmltopdf使用settings.py的STATIC_ROOT中的路径生成pdf文件。 尝试为STATIC_ROOT指定一个值并进行测试。
STATIC_ROOT = 'path.to.your.static.directory'
答案 1 :(得分:1)
您的根路径似乎有问题。尝试在Django设置文件(settings.py)中设置STATIC_URL
答案 2 :(得分:0)
错误是我没有在settings.py中定义我的media_root和media_url,包装器期望你有static_root,media_root,static_url和media_url可以工作