.txt
テンプレートは、メッセージファイルではなく、メッセージ スタイル マークアップの場所です。Djangoのデフォルト、または必要に応じて条件付きステートメントを使用して、ケースごとのバリエーションを実現できるはずです。Bootstrap を使用していることがわかりました。多くのユース ケースでは、デフォルトの Django メッセージング タグが Bootstrap 独自のアラート クラスに適切にマッピングされています。ビューでメッセージを作成すると...
messages.success(request, 'You have logged in successfully.')
'info'
...各 Django メッセージには、そのレベル ('success'
など)の文字列表現がtags 属性として含まれています。これらのタグ プロパティは、文脈に応じた書式設定の多くのニーズに使用できます。したがって、次のように(ベースなどの)テンプレートに渡すことができます。
<div class="alert alert-{{ messages.tags }} alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
{{ message }}
</div>
メッセージにレベルがある場合、success
ここでレンダリングされる CSS クラスは になるalert-success
ため、Bootstrap は緑色のアラートを表示します。ステータスが の場合、と青のようになりますinfo
。alert-info
Django のデフォルトのメッセージ レベルと文字列表現は、次のように定義されていdjango/contrib/messages/constants.py
ます。
DEFAULT_TAGS = {
DEBUG: 'debug',
INFO: 'info',
SUCCESS: 'success',
WARNING: 'warning',
ERROR: 'error',
}
DEFAULT_LEVELS = {
'DEBUG': DEBUG,
'INFO': INFO,
'SUCCESS': SUCCESS,
'WARNING': WARNING,
'ERROR': ERROR,
}
これを Bootstrap のデフォルトのアラート クラスとコンテキスト フォーマットと比較してください。

info
、success
およびwarning
クラスは Django のメッセージ レベルをミラーリングするため、これらのメッセージは Bootstrap の正しいフォーマットを自動的に取得します。しかし、Django の最も深刻なレベルはerror
Bootstrap のdanger
.
この名前の競合に対する推奨される回避策は、Django テンプレート タグを変更せずに保持することです。これにより、要素に というクラスが与えられalert-error
ます。次に、HTML テンプレートのどこかに数行の Javascript を使用して、alert-danger
これらの要素に追加のクラスとして追加します。
// Javascript somewhere in your HTML template
let errorElements = document.getElementsByClassName('alert-error');
[...errorElements].forEach(el => {el.classList.add('alert-danger')});
これにより、クラス「alert-error」を持つ要素にクラス「alert-danger」が追加されます。'alert-error' は Bootstrap によって無視されますが、要素のクラス リストに 'alert-danger' が追加されると、Bootstrap の赤いコンテキスト フォーマットが適用されます。
allauth で特にカスタマイズしたい場合、たとえば、allauth のデフォルトとは異なるメッセージ レベルを設定する場合 (ログイン メッセージをinfo
レベルではなくレベルとして設定するなど) は、 (および)success
で直接変更できます。allauth.account.views
allauth.socialaccount.views
また、追加のタグを Django メッセージに渡し、これらを条件付き書式設定に使用することもできます。たとえば、ドキュメントの追加のメッセージ タグとこの回答を参照してください。
(編集:Djangoコアコードの変更に関する元のアイデアを削除しました-悪い。)