@kyklaed

Авторизация после регистрации юзера, как?

Привет, у меня возник такой вопрос, у меня есть форма и есть представление сделанное на основе cbv

class UserFormView(CreateView):

    form_class=  MyUserCreationForm
    template_name='registration/reg.html'

    def form_valid(self, form):
        form.instance.user = self.request.user
        return super(UserFormView, self).form_valid(form)


как правильно встроить авторизацию, в таком виде не хочет работать:

class UserFormView(CreateView):

    form_class=  MyUserCreationForm
    template_name='registration/reg.html'

    def form_valid(self, form):
        form.instance.user = self.request.user
        username = self.request.POST['username']
        password = self.request.POST['password2']
        print(username)
        print(password)
        userauth = authenticate(self.request,username=username,password=password)
        print(userauth)
        if userauth is not None:
             if userauth.is_active:
                 login(self.request, userauth)
        return super(UserFormView, self).form_valid(form)


получается что username и password я получаю и передаю их в метод
но ответ от метода None , погугля можно подумать что он просто не находит такого пользователя потому что он еще не сохранен в бд. но метод form_valid(form) просто берет делает редирект на указынный урл. Если представление написано с логикой не CBV то в нем авторизация работает нормально.
  • Вопрос задан
  • 690 просмотров
Пригласить эксперта
Ответы на вопрос 1
Gasoid
@Gasoid
from django.contrib.auth import login

def view(request):
       ....
    user.is_active = True
    user.save()
    user.backend = 'django.contrib.auth.backends.ModelBackend'
    login(request, user)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы