mch*_*505 4 python pdf django wkhtmltopdf
我正在尝试使用这个库创建一个 pdf,实现最简单的 de docs 示例
使用 url 并像这样直接从模板渲染
url(r'^pdf/$', PDFTemplateView.as_view(template_name='my_template.html',
filename='my_pdf.pdf'), name='pdf'),
Run Code Online (Sandbox Code Playgroud)
这是模板文件的html
<!DOCTYPE html>
<html>
<head>
<title>Hello Wold</title>
</head>
<body>
<p>My First Pdf</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试 url 时,错误是这样的
/pdf/ 'NoneType' 对象的 AttributeError 没有属性 'endswith'
我该如何解决
这是回溯
回溯:get_response 139 中的文件“/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py”。response = response.render() 文件“/usr/local/lib/python2 .7/dist-packages/django/template/response.py" in render 105. self.content = self.rendered_content File "/usr/local/lib/python2.7/dist-packages/wkhtmltopdf/views.py" in render_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) File "/usr/local/lib /python2.7/dist-packages/wkhtmltopdf/utils.py" in make_absolute_paths 151. 如果不是 x['root'].endswith('/'):
异常类型:/pdf/ 处的 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')
Run Code Online (Sandbox Code Playgroud)
这是带有 django-wkhtmltopd 错误的屏幕截图
小智 5
出现此错误是因为 wkhtmltopdf 使用 settings.py 的 STATIC_ROOT 中的路径生成 pdf 文件。尝试为 STATIC_ROOT 赋值并测试。
STATIC_ROOT = 'path.to.your.static.directory'
Run Code Online (Sandbox Code Playgroud)