2016-09-21 2 views
1

은 내가 장고의 User 모델에서 만든 로그인 폼이 존재하는 경우 :장고 로그인 양식은() 사용자 이름은 이미

reg = LoginForm(request.POST or None) 
    if reg.is_valid(): 
     return HttpResponse('Success: valid form') 
    else: 
     return HttpResponse('Error: invalid form') 

이제 로그인하려고 시도하면 사용자 이름 e이 등록되지 않은 경우 성공 : 유효한 양식이 있지만 이미 존재하는 사용자 이름 인 경우 오류 : 잘못된 양식이 표시됩니다. 내가 왜

In [2]: data = {'username':'yax', 'password':'wrong_password'} 
In [3]: form = LoginForm(data) 

In [4]: form.is_valid() 
Out[5]: False 
In [6]: form.errors 
Out[7]: {'username': [u'A user with that username already exists.']} 

In [8]: data = {'username':'wrong_name', 'password':'wrong_password'} 
In [9]: form = LoginForm(data) 

In [10]: form.is_valid() 
Out[11]: True 
In [12]: form.errors 
Out[13]: {} 

이 기쁠 내가 알 수 있습니다

내가 무엇을 얻을 (내가 처음 등록하는 사용자 이름 YAX 그것을 시도) 아래 명령 줄에서이 일을하고 시도 이 오류가 발생하고 어떻게 해결할 수 있습니까?

+0

우리에게 당신의 오류를 보여라. print 'print (req.errors)' – sebb

답변

1

로그인 양식은 ModelForm이 아니어야합니다. 모델 인스턴스를 생성하거나 편집하는 경우입니다.이 경우 instance 매개 변수를 제공하지 않으므로 장고는 새 사용자를 생성한다고 가정합니다.

표준 양식을 사용하고 사용자 이름과 암호 필드를 명시 적으로 정의하십시오.

또는 django.contrib.auth.forms에서 제공되는 AuthenticationForm을 사용하면 전체 인증/로그인 프로세스를 처리 할 수 ​​있습니다.

+0

'request.method == '일 때'loginForm = AuthenticationForm()'과'reg = AuthenticationForm (request.POST or None) POST ''하지만 여전히 같은 오류가 발생합니다. – Yax

+0

무엇을, 당신은 여전히 ​​"그 사용자 이름을 가진 사용자가 AuthenticationForm에서 이미 존재합니까? –

+0

그 오류가 발생하지 않습니다. 내가'HttpResponse ('reg.errors')를 반환하면 빈 오류 (오류 없음)가 발생합니다. 하지만 나는'return HttpResponse ('request.POST')'를 시도했지만, 어떤 데이터도없이'usernamecsrfmiddlewaretokenpasswordregister'라는 dict 키만 보았습니다. 내 양식은'def index (request) : # codes' 뷰를 제출합니다. – Yax

관련 문제