2017-01-02 10 views
0

データベースを照会して、ユーザーが入力したユーザー名が既にデータベースに入っているかどうかを調べようとしています。はいの場合は、「already exist!」というメッセージが表示されます。代わりに、メッセージを表示するので、私は自分のブラウザに次のエラーが表示されます。私は、データベース内のユーザー名「ahti」を格納している次の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

問題は、jQueryが到達しようとするurl 'localhost:8000/librarysystem/validate /?username = a'です。つまり、サーバー側のエラーです。あなたのdjangoサーバーのログをチェックする必要があります。 – Arount

+0

なぜ私は2回警告メッセージを受け取るのですか? – Ahtisham

答えて

1

エラーが表示されているブラウザツールを使用して、サーバーからのトレースバックを確認する必要があります。 JsonResponseにクエリーセットを直接渡すことができないということは、あなたに言ったことでしょう。正しくシリアル化する必要があります。

しかし、実際にはやりたいことではありません。あなたはデータを気にせず、マッチがあるかどうかだけ気にします。だから、あなたにブール値を与えるであろう、そのクエリセットに.exists()の結果を渡す必要があります。

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

動作しますが、警告メッセージが2回表示されます – Ahtisham

関連する問題