Ответы пользователя по тегу Идентификация пользователей
  • Почему не работает login() в Django?

    gordon_shamway
    @gordon_shamway
    #forms
    class LoginForm(forms.Form):
        username = forms.CharField()
        password = forms.CharField(widget=forms.PasswordInput)
    
    
    class UserRegistrationForm(forms.ModelForm):
        password = forms.CharField(label='Password', widget=forms.PasswordInput)
        password2 = forms.CharField(label='Repeat password', widget=forms.PasswordInput)
    
        class Meta:
            model = User
            fields = ('username',  'email')
    
        def clean_password2(self):
            cd = self.cleaned_data
            if cd['password'] != cd['password2']:
                raise forms.ValidationError('Passwords don\'t match.')
            return cd['password2']
    
    #views
    def user_login(request):
        if request.method == 'POST':
            form = LoginForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                user = authenticate(username=cd['username'], password=cd['password'])
                if user is not None:
                    if user.is_active:
                        login(request, user)
                        return redirect('/blog/')
                    else:
                        return render(request,
                              'account/disabled_password.html')
                else:
                    return render(request,
                              'account/disabled_password.html')
        else:
            form = LoginForm()
        return render(request, 'account/login.html', {'form': form})
    
    
    def register(request):
        if request.method == 'POST':
            user_form = UserRegistrationForm(request.POST)
    
            if user_form.is_valid():
                # Create a new user object but avoid saving it yet
                new_user = user_form.save(commit=False)
                # Set the chosen password
                new_user.set_password(user_form.cleaned_data['password'])
                # Save the User object
                new_user.save()
            
               
                return redirect('/account/login/')
        else:
            user_form = UserRegistrationForm()
        return render(request, 'account/register.html', {'user_form': user_form})

    Простой пример регистрации и входа
    Ответ написан
    Комментировать