我有一个非常小的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