2014-01-08 3 views
0

나는 아주 작은 Django 앱을 가지고 있습니다. 장고가 제공하는 inbuilt User 모델을 사용하고 있습니다. 이 기능을 배우기 위해 관리자 패널에 갈 필요없이 사용자를 만들고 편집 할 수있는 페이지를 만들었습니다.비밀번호 유효성 확인 (Django/Python)

등록 페이지를 통해보기로 POST 할 때 user_form.is_valid()을 사용하여 입력란이 올바른지 확인할 수 있습니다 (사용자 이름이 30 자 미만이고 비밀번호가 다음보다 작음). 128, 기타 조건 ...).

내 편집 페이지의 경우 콘텐트를 좀 더 응답 성있게 만들고 싶었 기 때문에 JQuery를 통해 AJAX 요청을 사용하여 페이지를 다시로드하지 않고도 작업을 수행 할 수있었습니다. 이 잘 작동하지만, 내가 양식을 전송하고 있지 않다, 나는 그냥 쿼리를 골라와 같은 Ajax 요청에 보내 자바 스크립트를 사용하고, 유효성을 확인하는 문제로 날 떠나 수행합니다

$.get('/dms/edit_user_changeuser/', {inputNameSend : $("#inputname").val(), usernameToSend : $("#usernameID").val(), emailToSend : $("#emailID").val(),passwordToSend : $("#passwordID").val(), disabledToSend : checkedVal}, function(data){ 
      if(data != "success"){ 
       $("#errorDisplay").show(); 
      }else{ 
       $("#savedDisplay").show(); 
       $("#user_form").hide(); 
      } 
}); 

는 그리고 이것은 관련보기가 처리하는 방법입니다 : 입력이 유효 가정

@login_required 
def user_edit_changeuser(request): 
    # Like before, get the request's context. 
    context = RequestContext(request) 

    inputname = request.GET['inputNameSend'] 
    newUsername = request.GET['usernameToSend'] 
    newEmail = request.GET['emailToSend'] 
    newPassword = request.GET['passwordToSend'] 
    if(request.GET['disabledToSend'] == "true"): 
     disabledBool = False 
    else: 
     disabledBool = True 
    try: 
     user_obj = User.objects.get(username=inputname) 
     print("retUser") 
     user_obj.username = newUsername 
     user_obj.email = newEmail 
     user_obj.is_active = disabledBool 
     user_obj.set_password(newPassword) 
     user_obj.save() 
     print(str(disabledBool)) 
     return HttpResponse("success") 
    except Exception, e: 
     return HttpResponse(str(e)) 

이 모든 일을하지만, 수동으로 유효성을 확인하는 User.checkValidPassword(newPassword) 같은 뭔가가있다?

+0

https://docs.djangoproject.com/en/1.3/topics/auth/#manually-checking-a-user-s-password – dm03514

답변

1

User 인스턴스는 당신이 현재 사용자의 암호가 DB에 저장되는 것과 일치하는지 확인

user = User.object.get(username=inputname) 
user.checK_password('a_password') 

위의 검사를 수행 할 작업을 정확하게 수행하는 방법 check_password 있습니다. 대신 newPassword이 유효한지 확인하기 위해 유효성 검사를 요청한 경우. 적당한 길이이며, 당신이 사용자 입력의 유효성을 검사 양식을 사용할 수없는 이유는, 그것을 그냥 보조 노트로 AJAX 기반의 뷰


되지 않은 경우와 마찬가지로,이 없다 등의 숫자가 포함 파이썬에서 모든 예외를 잡는 데 반드시 필요한 것은 아닙니다. 실패로보고 싶은 모든 종류의 오류를 숨길 수 있습니다!

사용자가 존재하지 않을 것으로 예상되는 경우 명시 적으로 수행하십시오.

try: 
    user = User.object.get(username=inputname) 
except User.DoesNotExist: 
    # all other expections will not be caught! 
+1

최고, 나는 거의 바로 내 생각으로 그것을 가지고 이렇게 간단한 것을 질문 끝에. 확실히 RTFM의 경우지만, 내 두뇌는 튀김, 어쨌든, 도와 줘서 고마워! :) –