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])

テンプレートを .py ではなく .txt に変更し、エスケープを使用してみました。

編集:私が得るエラーは次のとおりです:「utf8」コーデックはバイトをデコードできません

編集。問題は、まったくレンダリングされていないことであることに気付きました。特別な文字の問題だけではありません。ということで、新たに質問させていただきます。

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 に答える