1

我正在使用 Django 重置密码流程,它向用户发送一封电子邮件,其中包含输入新密码的链接。此电子邮件的模板是 password_reset_email.html。我已将此模板复制到我自己的项目中并对其进行了自定义。但是,我无法使用特殊字符,例如 ø。通常,我使用像这样的实体

ø or ø 

但它们不起作用-它们只是直接显示为书面形式。我没有设置 settings.DEFAULT_CHARSET 所以它应该是 utf-8。在我写的 .py 文件中

# coding=UTF-8

函数 PasswordResetForm 执行以下操作:

email_template_name='registration/password_reset_email.html'
...
t = loader.get_template(email_template_name)
...

c = {'email': user.email,
      ...        
       }
send_mail("subject line",
            t.render(Context(c)), from_email, [user.email])

我尝试将模板更改为 .txt 而不是 .py,并使用转义。

编辑:我得到的错误是:'utf8' codec can't decode byte

编辑。我意识到问题在于它根本没有渲染。这不仅仅是一个特殊的字符问题。所以,我将把它作为一个新问题来问。

4

2 回答 2

0

您的问题可能与混合字符串和 unicode 序列有关。要强制表单文件中的所有字符串使用 unicode,请尝试在顶部添加以下导入:

from __future__ import unicode_literals
于 2012-10-31T16:06:38.817 回答
0

问题在于渲染,而不仅仅是特殊字符。我从来没有让 send_mail() 工作,但我正在使用 EmailMultiAlternatives.send()

在这里回答:

Python/Django:电子邮件模板未呈现。显示 html 标签并且不转换实体

于 2012-11-08T10:46:11.210 回答