Python 如何修复TypeError:初始值必须是str或None,而不是使用StringIO的字节
我收到错误消息初始值必须是str或None,而不是bytes,我不知道如何修复它。在切换到python 3之后,我面临着这个问题 此外,我将导入从io import StringIO更改为Python 如何修复TypeError:初始值必须是str或None,而不是使用StringIO的字节,python,django,pdf,stringio,Python,Django,Pdf,Stringio,我收到错误消息初始值必须是str或None,而不是bytes,我不知道如何修复它。在切换到python 3之后,我面临着这个问题 此外,我将导入从io import StringIO更改为 这是我的密码: def render_to_pdf(template_src, context_dict): template = get_template(template_src) context = context_dict html = template.render(con
这是我的密码:
def render_to_pdf(template_src, context_dict):
template = get_template(template_src)
context = context_dict
html = template.render(context)
result = StringIO()
pdf = pisa.pisaDocument(StringIO(html.encode("utf-8")), dest=result, encoding="utf-8")
以下是回溯:
Environment:
Request Method: GET
Request URL: http:///pdf/11479/
Django Version: 2.2.6
Python Version: 3.5.2
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'bootstrap3',
'bootstrap_themes',
'intranet',
'crispy_forms',
'fm',
'dal',
'dal_select2',
'django_crontab',
'django_tables2',
'django_filters']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'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']
Traceback:
File "/var/www/vhosts/intranet.health-nutrition.gr/health_nutrition/intranet/views.py" in pdf_view
598. 'fpa_total':fpa_total(),
File "/var/www/vhosts/intranet.health-nutrition.gr/health_nutrition/intranet/views.py" in render_to_pdf
542. pdf = pisa.pisaDocument(StringIO(html.encode("utf-8")), dest=result, encoding="utf-8")
Exception Type: TypeError at /pdf/11479/
Exception Value: initial_value must be str or None, not bytes
知道如何修复它吗?如果这段代码是基于Python2.x的,您可能需要的是“BytesIO”,而不是“StringIO”。@MichaelButscher