2017-02-05 9 views
1

Я пытаюсь войти в систему пользователя, открыв самозагрузки логин модальность и наполняя его имя пользователя и пароль, но движения я ударил кнопку «Login» я получаю следующее сообщение об ошибке в консоли браузера:Почему я получаю ошибку «500 (внутренняя ошибка сервера jQuery.min.js: 4)» в следующем коде ajax?

500 (internal server error)

Аякса:

$('#loginForm').on('submit',function(e){ 
    e.preventDefault(); 
    $.ajax({ 
    type: "POST", 
    url: "/librarysystem/login/", 
    data: { 
     'username':$("username").val(), 
     'password':$("password").val(), 
     csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val() 
    }, 
    dataType: 'json', 
    success: function(data){ 
     if (data.response) { 
     alert("Invalid"); 
     } 
     else 
     alert("Valid"); 
    }   
    }); 
}); 

urls.py:

from django.conf.urls import url 
from .import views 

urlpatterns = [ 
    url(r'^register/$',views.create_user), 
    url(r'^$', views.index, name="Index"), 
    url(r'^validate/$',views.validateForm), 
    url(r'^article/$', views.article, name="Article"), 
    url(r'^Login/$',views.loginUser, name="Login") 
] 

views.py:

from forms import signupForm 
from django.http import JsonResponse 
from django.contrib.auth import authenticate, login 
from django.contrib.auth.models import User  

def loginUser(request): 
    data = {} 
    if request.method == 'POST': 
     username = request.POST['username'] 
     password = request.POST['password'] 
     user = authenticate(username=username,password=password);     
     if user is None: 
      data['response'] = False 
     else: 
      data['response'] = True 
    return JsonResponse(data) 

ответ

1

Сообщение подробнее о реакции ошибок было бы полезно, как

$.ajax({ 
    type: "POST", 
    url: "/librarysystem/login/", 
    data: { 
     //... 
    }, 
    dataType: 'json', 
    success: function(data){ 
     //... 
    }, 
    error: function(jqXHR, status, err){ 
     alert(jqXHR.responseText); 
    } 
    }); 

BTW, я только предполагаю, что исключение может быть повышена путем настройки аутентификации Django настроен неправильно.

+1

Может быть, да, это я хочу получить в поле пароля каждого пользователя в интерфейсе администратора Django https://postimg.org/image/y9nz2vitz/ –

+0

Откуда взялись пользователи? Если они созданы вашей собственной формой администратора, убедитесь, что 'user.set_password' вызывается в' save'. – YKL

+0

Вот моя форма для регистрации и входа в систему -> forms.py: https://postimg.org/image/4tccpx7b3/ и вот мой регистрационный вид: https://postimg.org/image/xf1p1rsb5/, где я должен использовать 'user.set_password'? как вы можете видеть, я не использую метод сохранения в регистрационной форме, вместо этого я использую «create» для создания и сохранения пользователя. –

0

Изменить следующие 2 строки

username = request.POST['username'] 
password = request.POST['password'] 

в

username = request.POST.get('username','') 
password = request.POST.get('password','') 
+0

в порядке, которая решила проблему, но печатает «Valid» для каждого входа даже если я даю имя пользователя и пароль тем, кто не существует в базе данных. –

+0

i напечатало возвращаемое значение аутентификации и не возвращает ни одного для всех пользователей, включая тех, кто не существует в базе данных. что не так –

+1

оставьте это я исправил проблему :) –