2017-01-02 2 views
0

Я пытаюсь запросить базу данных, чтобы узнать, находится ли пользовательское имя, введенное пользователем, в базе данных. Если да, тогда он должен отображать сообщение «уже существует!». но вместо того, чтобы отображать сообщение я получаю следующее сообщение об ошибке в браузере:Почему не работает следующий код jquery?

500 internal server error

Я хранится имя пользователя «Ахти» в моей базе данных.

urls.py

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

urlpatterns = [ 
    url(r'^$', views.index, name="Index"), 
    url(r'^validate/$',views.validateForm), 
] 

views.py

from django.shortcuts import render 
from librarysystem.models import Users 
from django.http import JsonResponse 

def validateForm(request): 
    username = request.GET.get('username',None) 
    data = { 
     'is_taken' : Users.objects.filter(username__iexact=username) 
    } 
    return JsonResponse(data) 

мой JQuery код:

function validateForm() { 
    var username = $('#username').val(); 
    $.ajax({ 
    url: '/librarysystem/validate/', 
    data: { 
     'username': username 
    }, 
    dataType: 'json', 
    success: function(data) { 
     if (data.is_taken) { 
     alert("already taken!"); 
     } 
    } 
    }); 
} 
$(document).ready(function() { 
    $("#username").keyup(validateForm); 
}); 
+0

Есть ли отслеживающий в журнале Джанго сервера? Если есть, добавьте его в вопрос. – snakecharmerb

+0

Проблема заключается в url 'localhost: 8000/librarysystem/validate /? Username = a', которую вы пытаетесь достичь с помощью jQuery return 500 code (что означает ошибку на стороне сервера). Вы должны проверить журналы своего сервера django. – Arount

+0

Почему я получаю предупреждение дважды? – Ahtisham

ответ

1

Вы должны использовать инструменты браузера, где отображается ваша ошибка, чтобы увидеть трассировку, поступающую с сервера. Что бы вы сказали, так это то, что вы не можете передать запрос непосредственно в JsonResponse; вам необходимо его правильно сериализовать.

Однако на самом деле это не похоже на то, что вы хотите сделать. Вы не заботитесь о данных, вас просто волнует, есть ли матч. Таким образом, вы должны передать результат .exists() на этом QuerySet, который даст вам логическое значение:

data = { 
    'is_taken' : Users.objects.filter(username__iexact=username).exists() 
} 
+0

он работает, но я получаю предупреждение дважды – Ahtisham

Смежные вопросы