Python % 字符问题(转义字符问题)

0 投票
1 回答
1164 浏览
提问于 2025-04-16 22:49

我在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这个函数并不是返回邮件的内容,而是返回一个用来生成邮件内容的格式字符串。你可能需要考虑改一下这个函数的名字。

撰写回答