2016-08-04 119 views
0

我想在登錄auth用戶後重定向索引頁面。但不知道如何編碼對數據的響應。多次重定向登錄頁面Django Ajax Auth登錄

views.py

@csrf_exempt 
def Login(request): 
    if request.method == 'POST': 
     print("POST Method") 
     username = request.GET.get('username') 
     password = request.GET.get('password') 
     if username and password: 
      # Test username/password combination 
      user = authenticate(username=username, password=password) 
      # Found a match 
      if user is not None: 
       # User is active 
       if user.is_active: 
        # Officially log the user in 
        login(request, user) 
        data = {'success': True} 
        return render_to_response('index/index.html', data, RequestContext(request)) 
       else: 
        data = {'success': False, 'error': 'User is not active'} 
        return render_to_response('accounts/login.html', data, RequestContext(request)) 
      else: 
       data = {'success': False, 'error': 'Wrong username and/or password'} 
      print (data) 

      return HttpResponse(json.dumps(data), mimetype='application/json') 
    # Request method is not POST or one of username or password is missing 
    return render_to_response('accounts/login.html', RequestContext(request)) 

Ajax調用:POST(又是如何登陸認證用戶)

$('#signIn_1').click(function (e) { 
     var username = $.trim($('#un_1').val()); 
     var password = $.trim($('#pw_1').val()); 

     $.ajax({ 
      url : "{% 'login' %}", 
      type : 'POST', 
      data : { 
       'username' : username, 
       'password' : password 
      }, 
      dataType : 'json', 
      success : function (data) { 
       if (data != null && data == "success") { 
        window.location = '/' 
       } 
       else { 
        $('#signIn_1').append(data); 
        alert(data); 
       } 

      } 
     }) 

    }); 

})(jQuery); 

的login.html

  <div class="form-main"> 
          <form method="POST" action="{% url 'login' %}">{% csrf_token %} 
          <div class="form-group"> 
           <input type="text" id="un_1" class="form-control" placeholder="username" required="required"> 
           <input type="password" id="pw_1" class="form-control" placeholder="password" required="required"> 
          </div> 
          <button id="signIn_1" type="submit" class="btn btn-block signin">Sign In</button> 
          </form> 
          <div id="message"></div> 
         </div> 
+0

你爲什麼要這樣做'login(request,user)'? –

+0

我想附加到當前會話。這是通過login()函數完成的。 – lovethesky

回答

0

請將此用於解析ajax響應..

$('#signIn_1').click(function (e) { 
    var username = $.trim($('#un_1').val()); 
    var password = $.trim($('#pw_1').val()); 

    $.ajax({ 
     url : "{% 'login' %}", 
     type : 'POST', 
     data : { 
      'username' : username, 
      'password' : password 
     }, 
     dataType : 'json', 
     success : function (data) { 
      if (data != null && data.success == true) { 
       window.location = '/' 
      } 
      else { 
       $('#signIn_1').append(data); 
       alert(data); 
      } 

     } 
    }) 

}); 

})(jQuery);

+0

謝謝評論,查看文件的返回值是否沒有錯? – lovethesky

+0

請參閱https://docs.djangoproject.com/ja/1.10/topics/auth/default/ –