レベル== DEFAULT_MESSAGE_LEVELS.ERROR.
のメッセージが1つ以上ある場合にのみ、メッセージ用にコンテナ<div>
を作成する必要があります(メッセージを繰り返してレンダリングしますエラータグ付きのもの)。擬似コードでdjangoメッセージのあるレベルの存在をテストする方法
、このような何か:
{% for message in messages %}
{% if 'error' in message.tags %}
<div id="error-container">
{% break %} <!-- break doesn't exist -->
{% endif %}
{% endfor %}
テンプレートでこれを行うためのクリーンな方法は何ですか?テンプレートの言語がエラータグ付きで見つかった場合、messages
にループを壊すほど表現力があるとは思わない。 firstof
または|first
フィルタを使用して、error
メッセージタグが最初に出現したときにのみ<div>
を作成する方法はありますか?ビュー機能で
{% for message in messages %}
{% if 'error' in message.tags %}
{% ifchanged 1 %}
<div id="error-container">
{% endifchanged %}
{% endif %}
{% endfor %}
あるいは、フィルタmessages
を、テンプレートに渡し:
私はこれがビジネスロジックとプレゼンテーションロジックの最適な分離だと思うし、他の多くのテンプレートでも 'get_errors_only'を再利用しています。 – Escher