Я вызываю это представление (в Django) с помощью ajax-запроса, содержащего имя пользователя для запроса к базе данных.Он возвращает ошибку сервера, что пользовательский объект (в условии кроме) используется до того, как он будет определен, но он определен в строке выше!
Так что я подумал, что это может быть проблемой области видимости, и поставилuser = None
в начале elif
, зная, что это будет изменено при попытке, но затем я получаю None has no value DoesNotExist
.
def signup(request):
if request.method == 'GET':
return render_to_response('signup.html', context_instance=RequestContext(request))
elif request.is_ajax():
#query db for user with username provided via ajax, return if it exists
try:
user = User.objects.get(username=request.POST["username"])
except User.DoesNotExist:
return HttpResponse("false",context_instance=RequestContext(request))
else:
return HttpResponse("true", context_instance=RequestContext(request))
function usernameCheck(){
$.ajax({
type:'POST',
url:"http://omnicloud.me/signup",
data:{username: $("#username").value},
success:function(response){
if(response=="true"){
$('#passAlert').innerHTML("Sorry, that username is already taken")
}
},
headers:{"X-CSRFToken", getCookie('csrftoken')}
});
return !($('#passAlert').value == "Sorry, that username is already taken")
}