操作时的Python%字符问题(Escape char问题)

时间:2011-08-03 16:57:41

标签: python string escaping

我尝试在Django中发送确认电子邮件,但是excape字符存在问题。

我有一个帮助邮件内容的函数

def getActivationMailBody():
    email_body = "<table width='100%'>
    email_body = email_body + '<p>' + '%(confirmLink)s' + '</p>'
    return email_body

确认网址就像

一样嵌入
email_body = getActivationMailBody()
email_body = email_body % {'confirmLink': '%s/kullanici/onay/%s/%s'%(WEB_URL,md5.new(form.cleaned_data['email']).hexdigest()[:30], activation_key)}
msg = EmailMessage(email_subject, email_body, DEFAULT_FROM_EMAIL, [email_to]) 
msg.content_subtype="html"
res = msg.send(fail_silently=False)

但是,confirmLink嵌入时出现错误

unsupported format character ''' (0x27) at index 18

我发现问题是由%字符引起的,但我无法弄清楚如何纠正这个问题。

你可以给我任何建议吗?感谢

1 个答案:

答案 0 :(得分:3)

在格式字符串中,%可以通过加倍来转义:

email_body = "<table width='100%%'>"

你构建这个有点奇怪,因为getActivationEmailBody没有返回电子邮件的正文,而是返回一个格式字符串来创建正文。您可能想要重命名该功能。