Ошибка сервера: пользователь не определен перед использованием - PullRequest
0 голосов
/ 22 ноября 2011

Я вызываю это представление (в 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")
}

1 Ответ

2 голосов
/ 22 ноября 2011

except user.DoesNotExist: должен ссылаться на модель пользователя (User), а не на пользовательский объект (user), как в except User.DoesNotExist:

...