我知道有关于此的现有标题,但问题与我的不同.所以这是我的问题.我使用上下文处理器来显示用户名.它正在工作,但我的哨兵昨天发现了一个错误.
UnicodeEncodeError:'ascii'编解码器无法对位置1中的字符u'\ xe9'进行编码:序数不在范围内(128)
这是我的代码:
def display_name(request):
try:
name = "{0} {1}".format(request.user.first_name, request.user.last_name)
name = name.strip()
if not name:
name = request.user.username
except AttributeError:
name = None
return {'display_name': name,}
Run Code Online (Sandbox Code Playgroud)
这是什么原因?或者用户输入他们姓名的字符?
Jac*_*edd 19
这基本上是用户输入问题.
文本编码是一个完整的"事物",很难进入,但在坚果壳中,用户输入的Unicode字符无法轻易映射到ASCII字符.
您可以通过更改此设置来解决此问题
name = "{0} {1}".format(request.user.first_name, request.user.last_name)
Run Code Online (Sandbox Code Playgroud)
对此:
name = u"{0} {1}".format(request.user.first_name, request.user.last_name)
Run Code Online (Sandbox Code Playgroud)
这告诉Python将字符串视为unicode字符串(其所有正常函数都作为ascii字符串).
| 归档时间: |
|
| 查看次数: |
10635 次 |
| 最近记录: |