我有一個非常小的Django應用程序,主要是爲了學習的目的。我正在使用由Django提供的內置用戶模型。爲了學習功能,我創建了一些頁面,這些頁面允許我創建和編輯用戶,而無需轉到管理面板。檢查密碼有效性(Django/Python)
註冊頁面允許我很容易地檢查密碼和電子郵件有效性等內容,因爲當我POST到視圖時,我只需使用user_form.is_valid()
來檢查字段是否正確(用戶名少於30個字符,密碼小於128,其他條件...)。
對於我的編輯頁面,我希望使內容更具響應性,因此我通過JQuery使用了AJAX請求,從而允許我在不重新加載頁面的情況下執行操作。這個偉大的工程,但它確實讓我檢查有效性的問題,因爲我不發送的形式,我只是用JavaScript來挑出來的查詢,並在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)
手動檢查的有效性?
https://docs.djangoproject.com/en/1.3/topics/auth/#manually-checking-a-user-s-password – dm03514