Python % 字符问题(转义字符问题)
我在Django中尝试发送确认邮件,但遇到了转义字符的问题。
我有一个帮助函数,用来生成邮件内容,如下所示:
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 个回答
3
在格式字符串中,%符号可以通过重复来转义,也就是写成%%。
email_body = "<table width='100%%'>"
你这样写有点奇怪,因为getActivationEmailBody这个函数并不是返回邮件的内容,而是返回一个用来生成邮件内容的格式字符串。你可能需要考虑改一下这个函数的名字。