msgid = '<%s.%s.%s%s@%s>' % (utcdate, pid, randint, idstring, domain)
在C:\Python27\lib\site-packages\django\core\mail\message.py第 67 行,她在尝试发送电子邮件时被 django 骂。
从调试器我看到参数值:
> utcdate
'20170902152117'
pid
6472
randint
39104
idstring
u''
domain
<django.core.mail.utils.CachedDnsName object at 0x027CCEB0>
但总的来说,因为 我是 Django 的新手,所以我不清楚<%s.%s.%s%s@%s>,也许有人可以告诉我百分号在这个表达式中的作用。
错误弹出如下:
“ascii”编解码器无法解码位置 0 中的字节 0xd1:序数不在范围内(128)
此代码格式化一个字符串。
字符串格式化允许您将不同的值替换为字符串。% 运算符用于此目的。例子:
% 运算符的左侧是我们将在其中替换值的字符串,右侧是将被替换的对象(或包含对象的元组)。替换值替换 %s 说明符。
在您的示例中,有几个 %s 说明符。在这种情况下,要替换的元素的元组显示在右侧。例子:
%s 说明符可能是最常见的。它说一个字符串将被替换为它的位置。还有其他说明符,例如 %d,用于替换整数。
错误的根本原因是python假定的默认编码是ASCII。因此,如果要使用 encode('utf8') 编码的字符串数据包含一个超出 ASCII 范围的字符,例如 对于像“hgvcj 터 파크 387”这样的字符串,python 会抛出错误,因为该字符串不是预期的编码格式。
如果您使用的 python 版本早于 3.5 版本,可靠的解决方案是将 python 接受的默认编码设置为 utf8。
将这些行添加到代码的顶部: