2017-11-29 1 views
1

사용자가 내 웹 사이트에 로그인 할 수있는 기능을 만들었습니다. 그러나 관리자 계정으로 로그인 한 경우에만 작동합니다. 그렇지 않으면 등록 된 사용자가 존재하지 않고 "사용자가 존재하지 않습니다"라는 메시지가 나타납니다.Django - admin 계정 만 로그인 할 수 있습니다.

class LoginForm(forms.Form): 

    username = forms.CharField() 
    password = forms.CharField(widget=forms.PasswordInput) 

    def clean(self, *args, **kwargs): 
     username = self.cleaned_data["username"] 
     password = self.cleaned_data["password"] 

     if username and password: 
      user = authenticate(username=username, password=password) 
      if not user: 
       raise forms.ValidationError("This is user does not exist") 
      if not user.check_password(password): 
       raise forms.ValidationError("Incorrect password") 
      if not user.is_active: 
       raise forms.ValidationError("This user is not longer active") 
     return super(LoginForm, self).clean(*args, *kwargs) 

로그인보기 : 어떤 도움

def login_view(request): 
    form = LoginForm(request.POST or None) 
    title = "Log in" 
    if form.is_valid(): 
     username = form.cleaned_data['username'] 
     password = form.cleaned_data['password'] 
     user = authenticate(username=username, password=password) 
     login(request, user) 
     return redirect('../../index/') 

    return render(request, 'user/loginRegister.html', {'form': form, 'title': title}) 

덕분에 여기

코드입니다!

+0

당신이뿐만 아니라보기 기능을 보여줄 수 있습니까? –

+0

@RajaSimon done –

+1

어떻게 등록 된 사용자를 만들었습니까? 암호가 해시되도록'set_password'를 사용 했습니까? – Alasdair

답변

0

기본 인증 백엔드는 is_activeTrue 인 사용자 만 로그인합니다. 기본적으로

is_active=True는 사용자가 로그인 할 수 있음을 의미합니다. 그것은 의미하지 않는다 그들이 현재 로그인되어 있는지.

관련 문제