Почему нам нужно регистрировать пользователя в функции signup_view и login_view? Django
Мне нужен теоретический ответ, а не практический, я следовал этому учебнику по Django и все кажется довольно понятным, но я не уверен в одной вещи, вот представления для страницы регистрации и страницы входа:
def signup_view(request):
if request.method == "POST":
form = UserCreationForm(request.POST)
if form.is_valid():
user = form.save()
#log the user in
login(request, user)
return redirect("articles:list")
else:
form = UserCreationForm()
return render(request, 'account/signup.html', {"form": form})
def login_view(request):
if request.method == "POST":
form = AuthenticationForm(data = request.POST)
if form.is_valid():
#log in the user
user = form.get_user()
login(request, user)
return redirect('articles:list')
else:
form = AuthenticationForm()
return render(request, "account/login.html", {"form":form})
Итак, мой вопрос в том, почему мне нужно писать login(request, user) дважды, разве функция signup не сохраняет пользователя в базе данных, а функция log in просто регистрирует его?
В коде, для post запроса и валидных форм, ответом всегда является перенаправление на articles:list страницу.
Если считать представление articles:list требующим входа, то для просмотра страницы пользователи должны иметь активную сессию.
В функции login_view после аутентификации вполне очевидно, что следующим шагом будет вход пользователя в систему и перенаправление на articles:list
В signup_view логика может быть такой: добавить пользователя в базу данных и перенаправить на articles:list, но поскольку articles:list требует входа, нам нужно войти в систему.
Возможно, именно так они продумали логику для примера, все зависит от того, что вам нужно, поскольку это не правило для входа пользователя в систему после регистрации.