<form method="post" action="/accounts/login/?next=/IW/home" id='login-form'"> <form method="post" action="/accounts/login/?next=/IW/home" id='login-form'"> <form method="post" action="/accounts/login/?next=/IW/home" id='login-form'" />

非フィールド検証エラーを識別するDjangoはどの形式に関連しています

検証エラーを特定する方法は、複数のフォームを含むテンプレートのどのフォームに関連付けられていますか?

シナリオを説明しましょう。私は私のbase.htmlの中にログインウィンドウのポップアップスクリプトを持っています

<div id="dialog1" class="window">
    <form method="post" action="/accounts/login/?next=/IW/home" id='login-form' name=login-form>{% csrf_token %}

            <div class="d-header">


                {{ form.non_field_errors }} 
                    <input type="text" name="username" id="id_username" value="" onclick="this.value=''"/>
<input type="password" name="password" id="id_password" value="" onclick="this.value=''"/>
<input type="hidden" name="login_form" value="1" /> <input type="submit" value="login" /> </div> {% endif %} </div> </form> </div> <div id="mask"></div> {% if form.non_field_errors %} <script> var maskHeight = $(document).height(); var maskWidth = $(window).width(); //Set heigth and width to mask to fill up the whole screen $('#mask').css({'width':maskWidth,'height':maskHeight}); $('#mask').show();$('.window').show(); </script> {% endif %}

As all other templates extends base,html whenever there is an error non_field error then login window pops up . I would like to show the login error only when login form is submit not on submit of someother form with a non field error.

For this I need to identify the name of the form.something like this {% ifequal form.form_name login_form %} - Display login error .Is this possible??

0

1 答え

彼らはテンプレートの中の名前 "フォーム"について特別なものではありません。これはデフォルトのコンテキスト名です。フォームに好きな名前を付けることができます。

あなたの文脈の中でフォームの名前を変えるだけです:

from django.http import Http404

def detail(request, poll_id):

    # NOTE: This view code isn't really form processing code, just using it to show
    #       how you can pass different names into your template context.

    login_form = MyLoginForm()
    detail_form = MyDetailForm()

    try:
        p = Poll.objects.get(pk=poll_id)
    except Poll.DoesNotExist:
        raise Http404

    return render_to_response('polls/detail.html', {'poll': p, 'login_form': login_form, 'detail_form': detail_form})

その後:

<div id="dialog1" class="window">         
   <form method="post" action="/accounts/login/?next=/IW/home" id='login-form' name=login-form>
       {% csrf_token %}
       <div class="d-header">
            {{ login_form.non_field_errors }}
    .
    .
    .      

Also, if you want to do multiple instances of the same form type, have a look at formsets

0
追加された