1

ホームページにログインフォームとサインアップフォームがあり、form.is_valid()を使用してフォームを検証します。

代わりに

return render(request,'registration/login.html', {'form': form})

私が使う

messages.error(request, 'username or password wrong.')
return redirect('/')

これをしているのは

return render(request,'registration/login.html', {'form': form})

form.is_valid()が失敗した後、ページを更新すると、再送信確認を示すポップアップボックスが表示されます。これは必要ないので、2番目のメソッドを使用しています。

問題は、ログインとサインアップの2つの形式があることです。エラーメッセージを1つの場所に配置できないため、誤解を招く可能性があります。1ページに2つのメッセージを表示するにはどうすればよいですか。

4

2 に答える 2

8

extra_tagsメッセージフレームワークからのメッセージに使用して、2つの異なるメッセージを識別できます。

たとえば、ログインエラーの場合

messages.error(request, 'username or password wrong.', extra_tags='login')

サインアップエラーの場合、

messages.error(request, 'username or password wrong.', extra_tags='signup')

そして、タグに応じてテンプレートにメッセージを適切な形式で配置します

{# login form #}
{%for message in messages %}
     {%if "login" in message.tags %}
          <p> {{message}} </p>   {# show login error message #}
     {%endif%}
{%endfor%}

{# signup form #}
{%for message in messages %}
     {%if "signup" in message.tags %}
          <p> {{message}} </p>   {# show signup error message #}
     {%endif%}
{%endfor%}

メッセージタグの追加に関する詳細情報

于 2013-02-22T08:23:52.253 に答える
0

form.errors dictを使用できます。彼は、次のような無効なフォームの場合に、フィールド名とエラーメッセージを保存します。

>>> print form.errors
{'password': [u'This field is required']}

次に、テンプレートで使用できます。

{% if 'username' in form.errors.keys %}
    <div class="error-message">
        Your username input error message!
    </div>
{% endif %}
{% if 'password' in form.errors.keys %}
    <div class="error-message">
        Your password input error message!
    </div>
{% endif %}

私が見ることができる唯一の問題は、出力メッセージです。彼女は少し醜いです=]しかし、他のdictを使用してきれいなメッセージを保存し、フィールド名で取得するなど、別のトリックを使用してこれをよりきれいにすることができます。 。あなたはこの選択をします。

*私の悪い英語でごめんなさい;/

于 2013-02-22T06:15:20.993 に答える