0

base.htmlにポップアップログインフォームがあります

<div id="login-box" class="login-popup">
    <a href="#" class="close"><img src="http://localhost:8000/static/media/close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a>
      <form method="post" class="signin" action="{% url login_view %}" id="LoginForm">
          <div id="ajaxwrapper">
            <fieldset class="textbox">
            <label class="username">
            <span>Username</span>
            <input id="username" name="username" value="" type="text" autocomplete="on" placeholder="Username">
            </label>
            <label class="password">
            <span>Password</span>
            <input id="password" name="password" value="" type="password" placeholder="Password">
            </label>
            <p id="sendwrapper"></p>
            <p><button id="submitbutton" type="submit">Sign in</button></p>
            <p>
            <a class="forgot" href="/accounts/password/reset/">Forgot your password?</a>
            </p>       
            </fieldset>
          </div>
      </form>

このフォームを送信すると、Djangoビューで次の関数が呼び出されます。

def login_view(request):
if request.method == 'POST':
    form = LoginForm(request.POST)
    if form.is_valid():
        print "%s" % repr(request.POST) 
        print "%s" % repr(request.GET) 
        cd = form.cleaned_data
        user = authenticate(username=cd['username'], password=cd['password'])
        print user
        if user is not None:
            if user.is_active:
               login(request, user)
               # success
               response_dict = 'success' 
               return render_to_response("tr/login.html", { 'username' : user , 'response_dict' : response_dict })
            else:
               # disabled account
               response_dict = 'The account is disabled'
               return render_to_response("tr/login.html", { 'response_dict' : response_dict })
        else:
           # invalid login
           response_dict = 'Username or Password is not correct'
           return render_to_response("tr/login.html", { 'response_dict' : response_dict })
    else:
        print "%s" % repr(form.errors)

ここで、失敗したすべての試行に対してポップアップログインボックスを維持し、成功した試行でそれを閉じたいと思います。このために、私は以下のjQueryコードを試しています。しかし、私はそれを処理する方法がわかりません。

jQuery(function() {
  var form = jQuery("#LoginForm");
  form.submit(function(e) {
      var a = 1;
      jQuery("#submitbutton").attr('disabled', true)
      jQuery("#sendwrapper").prepend('<span>Sending message, please wait... </span>')
      if(a==1){jQuery("#ajaxwrapper").load(
          form.attr('action') + ' #ajaxwrapper',
          form.serializeArray(),
          function(responseText, responseStatus) {
              jQuery("#sendwrapper").html('<span> AAAAAAAAAAAAAAA </span>')    
              jQuery("#sendbutton").attr('disabled', false)
          }
      )}
      else{jQuery("#ajaxwrapper").load(
          form.attr('action') + ' #ajaxwrapper',
          form.serializeArray(),
          function(responseText, responseStatus) {
              jQuery("#sendwrapper").html('<span> AAAAAAAAAAAAAAA </span>')    
              jQuery("#sendbutton").attr('disabled', false)
          }
      )};
      e.preventDefault(); 
  });
 });

助けてください!!

4

1 に答える 1

0

login_view で、テンプレートに「成功」​​を返します。ログインが成功した場合、success=True、それ以外の場合は success=False。

テンプレートで、成功 == True かどうかを確認して、ポップアップを閉じることができます。

ところで、あなたの変数は少し混乱しています。次のようなことをお勧めします。

response_dict['message'] = 'Login successful.' 
response_dict['success'] = True
response_dict['user'] = user
return render_to_response("tr/login.html", response_dict)

これを行う場合、ユーザーをテンプレートに渡す必要もありません: https://docs.djangoproject.com/en/dev/topics/auth/#authentication-data-in-templates

于 2012-05-20T22:49:38.990 に答える