Вход после регистрации
Часть раздела Пользователи и учетные записи путешествия по Django на Coddy. Урок 5 из 16.
Новый пользователь регистрируется, а затем должен ввести на странице входа пароль, который выбрал всего несколько секунд назад. Представление может само выполнить вход за него.
login(request, user) из django.contrib.auth начинает сеанс для переданного ему пользователя — тот же сеанс, который начинает LoginView после проверки пароля. login() ничего не проверяет, поэтому вызывай её только для пользователя, которому твой код уже доверяет. Игровой сайт выполняет вход игрока, когда тот открывает ссылку из приветственного письма:
from django.contrib.auth import login
def welcome(request, token):
player = get_object_or_404(Player, welcome_token=token)
login(request, player.user)
return redirect("games:lobby")В представлении регистрации доверенным является пользователь, которого возвращает form.save().
Задание
Легко- После успешной регистрации новый пользователь входит в систему и попадает на
/. - Если форма отклоняет регистрацию, никто не входит в систему.
Нажми Run, открой /signup/ и создай аккаунт: в заголовке будет написано Signed in as и твоё имя.
Попробуйте сами
from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import get_object_or_404, redirect, render
from .forms import NoteForm
from .models import Note
def note_list(request):
notes = Note.objects.all()
return render(request, "notes/note_list.html", {"notes": notes})
def note_detail(request, pk):
note = get_object_or_404(Note, pk=pk)
return render(request, "notes/note_detail.html", {"note": note})
def note_create(request):
if request.method == "POST":
form = NoteForm(request.POST)
if form.is_valid():
note = form.save()
return redirect("notes:detail", pk=note.pk)
else:
form = NoteForm()
return render(request, "notes/note_form.html", {"form": form})
def note_edit(request, pk):
note = get_object_or_404(Note, pk=pk)
if request.method == "POST":
form = NoteForm(request.POST, instance=note)
if form.is_valid():
form.save()
return redirect("notes:detail", pk=note.pk)
else:
form = NoteForm(instance=note)
return render(request, "notes/note_form.html", {"form": form, "note": note})
def note_delete(request, pk):
note = get_object_or_404(Note, pk=pk)
if request.method == "POST":
note.delete()
return redirect("notes:list")
return render(request, "notes/note_confirm_delete.html", {"note": note})
def signup(request):
if request.method == "POST":
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect("login")
else:
form = UserCreationForm()
return render(request, "notes/signup.html", {"form": form})
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Пользователи и учетные записи
3Ваши собственные данные
У заметки есть владелецТолько мои заметкиПотренируйтесь самостоятельно: Песочница Django