如何从django.utils.safestring.SafeText获取字符串

abb*_*ood 4 python django python-2.7

我在单元测试中得到了一个django.utils.safestring.SafeText:

ipdb> mail.outbox[0].body
u'Dear John Doe,<br>\n<p>\nYou have received a ..

ipdb> type(mail.outbox[0].body)
<class 'django.utils.safestring.SafeText'>
Run Code Online (Sandbox Code Playgroud)

我想将上面的内容转换为字符串,以便我可以删除\n字符..即我想使用该rstrip()方法..但我显然不能在一个django.utils.safestring.SafeText对象上做到这一点.想法?

Jac*_*man 9

从Django 2.0.4开始,str(mail.outbox[0].body)不再有效 - 它返回相同的SafeText对象.(请参阅此Django提交的原因.)

相反,您可以添加一个空字符串以获取常规字符串:

type(mail.outbox[0].body + "") == str

如果它帮助其他人,我遇到了这个问题,因为我试图从Django传递一个SafeText pathlib.Path,抛出TypeError: can't intern SafeText.添加空字符串可以修复它.


Ser*_*aev 4

基于 SafeText 创建新字符串

str(mail.outbox[0].body)
Run Code Online (Sandbox Code Playgroud)