양식 유효성 검사의 일부로 암호와 password2가 비교됩니다. 이는 소량의 데이터를 반환하는 매우 작은 사이트에 대한 간단한 AJAX 요청 시스템의 일부입니다 (따라서 JSON을 사용하지 않습니다). 프로그램의 아이디어/목표/요약은 사용자 로그인을 시도한다는 것입니다. 사용자가 존재하지 않으면 클라이언트 측에 새 사용자의 양식을로드/공개하도록 요청합니다 (추가 된 password2 필드 만 입력하고 펜 이름을 묻습니다).Django : true를 반환해야하는 경우보기에서 false를 반환하는 암호 검사
class new_user(forms.Form):
username = forms.EmailField()
password = forms.PasswordInput()
password2 = forms.PasswordInput()
pen_name = forms.CharField(max_length=30)
Views.py 오류는 다음과 같습니다 :
프로그램이#*********
Forms.py (오류가 여기 없음)으로 동결 여기 어디에 파일, 나는 스포츠를 표시 한한다
def user_log_in(request):
#add stuff for ajax request
user_pass = log_in(request.POST)
er = []
if user_pass.is_valid():
print "valid"
cleaned_info = user_pass.cleaned_data
user_object = User.objects.filter(email = cleaned_info['username'])
if user_object.exists():
logged_in_user = auth.authenticate(username=cleaned_info['username'], auth_password=cleaned_info['password'])
#add in is_active
if logged_in_user is not None:
auth.login(request, logged_in_user)
return HttpResponseRedirect('/home')
else:
er.append("Incorrect Password")
else:
new_user_pass = new_user(request.POST)
if new_user_pass.is_valid():
cleaned_info_new = new_user_pass.cleaned_data
print "check points"
if cleaned_info_new['password'] == cleaned_info_new['password2']: #********
print "clean"
new_user_query = creat_user(
username=cleaned_info_new['username'],
password=cleaned_info_new['password'],
email=cleaned_info_new['username']
)
new_user_query.save()
msg = ""
try:
send_mail("Activate", msg, '[email protected]',
[cleaned_info['username']], fail_silently=False)
except:
er.append("Error Sending Email")
else:
er.append('Passwords are not the same')
elif "TN" in request.POST:
print "TN"
for e in new_user_pass.errors:
er.append(e)
#elif to check for is_active
else:
print "n_usr"
return HttpResponse('n_usr')
else:
for e in user_pass.errors:
er.append(e)
for e in er:
print"-"
print e
print"-"
return HttpResponse('SOS')
장고 디버그 페이지에는 다음 말한다 :
KeyError at /ajax/login 'password' Request Method: POST Request URL: http://127.0.0.1:8000/ajax/login Django Version: 1.4 Python Executable:
게시물 변수 물건에 오류가 이것이다 (나는 내 이메일을 지워졌) :
GET: No GET data POST: username = u'********@aol.com' TN = u'TN' password2 = u'test' password = u'test' pen_name = u'testing123' FILES: No FILES data
그냥 문제가 여기 경우에, 나는 자바 스크립트 파일을 포함 시켰습니다.
n_usr = false;
function log_in() {
if(!$('#pass_enter').hasClass('#usr_enter')){
password = $('#pass_enter').val();
}else{
password = '';
}
if(!$('#usr_enter').hasClass('blur_field')){
username = $('#usr_enter').val();
}else{
username = '';
}
alert(username);
if(!n_usr){
$.post('/ajax/login',{password: password, username: username}, function(data) {
if(data == "n_usr"){
$('#new_user_entry').show('slow');
n_usr = true;
}
else {
}
})
}else {
if (!$('#pass_re_enter').hasClass('blur_field')){
password2 = $('#pass_re_enter').val();
}else {
password2 = '';
}
if (!$('#pass_re_enter').hasClass('blur_field')){
penname = $('#pen_enter').val();
}else {
penname = '';
}
$.post('/ajax/login', {password: password, password2: password2, username: username, pen_name: penname, TN: "TN"}, function(data) {
if(data == "e_act"){
} else {
}
});
}
}
어떻게'new_user' 폼을 선언합니까? –
왜 장고의 기본 인증 안돼? –
@Justanotherdunce 그냥이 양식은 사용자를 기록 할뿐만 아니라 사용자가 등록되지 않은 경우 사용자 측에서 추가 정보를 묻습니다 (JQuery는 장고가 n_usr을 반환하면 나머지 양식을 나타냄). –