Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django UnicodeEncodeError:&x27;ascii';编解码器可以';t编码字符u'\xe9';位置1:序号不在范围内(128)_Django - Fatal编程技术网

Django UnicodeEncodeError:&x27;ascii';编解码器可以';t编码字符u'\xe9';位置1:序号不在范围内(128)

Django UnicodeEncodeError:&x27;ascii';编解码器可以';t编码字符u'\xe9';位置1:序号不在范围内(128),django,Django,我知道有关于这个的现有标题,但有一个问题和我的不同。这就是我的问题。我使用上下文处理器显示用户名。它正在工作,但我的哨兵昨天发现了一个错误 UnicodeEncodeError:“ascii”编解码器无法对位置1中的字符u'\xe9'进行编码:序号不在范围内(128) 这是我的密码: def display_name(request): try: name = "{0} {1}".format(request.user.first_name, request.user.l

我知道有关于这个的现有标题,但有一个问题和我的不同。这就是我的问题。我使用上下文处理器显示用户名。它正在工作,但我的哨兵昨天发现了一个错误

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,}

这是什么原因?或者用户输入他们名字的字符?

这基本上是用户输入的问题

文本编码是一个完整的“东西”,很难理解,但在一个简单的例子中,用户输入的Unicode字符不容易映射到ASCII字符

您可以通过更改以下内容来解决此问题:

name = "{0} {1}".format(request.user.first_name, request.user.last_name)
为此:

name = u"{0} {1}".format(request.user.first_name, request.user.last_name)

这告诉Python将字符串视为unicode字符串(它将所有正常函数视为ascii字符串)。

在我标记答案之前。在模板中使用{{user.get_full_name}}可以吗?它不会检测到ascii错误?是的,可以。Django的内置内容总是(通常)返回unicode字符串。