если вы хотите использовать имя шаблона.
от вопрос уже есть ответ здесь:
Django: Как войти в систему сразу после регистрации, используя универсальный CreateView 1 ответАвтоматический вход новых зарегистрированных пользователей не работает в случае «регистрации на основе классов».
Я последовал примеруэтот урок, который предлагает следующий вид регистрации:
# myapp/views.py
from django.contrib.auth.forms import UserCreationForm
from django.urls import reverse_lazy
from django.views import generic
class SignUp(generic.CreateView):
form_class = UserCreationForm
success_url = reverse_lazy('login')
template_name = 'signup.html'
Я попытался включить решение на основе класса изэтот ответ, но после успешной регистрации нового пользователя, регистрация не происходит, как ожидалось. Есть ли изменения в Django 2.1.4, которые могут привести к его неисправности?
myapp.users.views
:
from django.views import generic
from django.contrib.auth import authenticate, login
from .forms import CustomUserCreationForm
class SignUp(generic.CreateView):
form_class = CustomUserCreationForm
success_url = '/index'
template_name = 'signup.html'
#auto login after register:
def form_valid(self, form):
#save the new user first
form.save()
#get the username and password
username = self.request.POST['username']
password = self.request.POST['password1']
#authenticate user then login
user = authenticate(username=form.cleaned_data['username'], password=form.cleaned_data['password1'],)
login(self.request, user)
return super(SignUp, self).form_valid(form)