我有一个python脚本,用于使用Djnago模板创建静态html文件。它看起来如下:
....
from django.template import Template, Context
from django.conf import settings
settings.configure()
template = """
<!DOCTYPE html>
<html lang="en">
..........................
..........................
</html>
"""
t = Template(template)
c = Context({"field1":field1_from_program,
"field2": some_dictionary,
......
......
"field1000": some_other_list
})
f1=open(args.name+'.html', 'w+')
try:
f1.write(t.render(c).encode('utf-8'))
except UnicodeEncodeError:
f1.write(t.render(c).encode('ascii', 'ignore').decode('ascii'))
f1.close()
在某些情况下,我收到以下错误
Traceback (most recent call last):
File "script.py", line 733, in <module>
main()
File "script.py", line 723, in main
f1.write(t.render(c).encode('ascii', 'ignore').decode('ascii'))
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 209, in render
return self._render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 201, in _render
return self.nodelist.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 903, in render
bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 917, in render_node
return node.render(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 957, in render
output = self.filter_expression.resolve(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 647, in resolve
obj = self.var.resolve(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 787, in resolve
value = self._resolve_lookup(context)
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 847, in _resolve_lookup
current = current()
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 3: ordinal not in range(128)
我发现content
中的某些字段导致了此错误,因此我将.encode('ascii', 'ignore').decode('ascii')
添加到导致此错误的变量中。但是,错误日志中并不明显。还有更多此类值,并且错误消息未显示哪个字段导致此错误的详细输出。换句话说,如果"field100":value_for_field100,
,我想知道问题是value_for_field100
可能正在使用try catch块。
从这个意义上说,请注意我的问题与其他SO问题不同,例如this或this。因此,我真的相信这不是一个重复的问题。
任何提示都会非常感激。