가입 후 로그인된 상태
Coddy Django 여정의 사용자와 계정 섹션에 포함된 레슨. 16개 중 5번째.
새 사용자가 가입한 뒤, 로그인 페이지에서 몇 초 전에 선택한 비밀번호를 입력해야 합니다. 뷰에서 직접 로그인시킬 수 있습니다.
django.contrib.auth의 login(request, user)은 전달한 사용자를 위한 세션을 시작합니다. 이 세션은 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()가 반환하는 사용자입니다.
챌린지
쉬움- 유효한 가입 후 새 사용자는 로그인되고
/에 도착합니다. - 양식에서 거부된 가입은 아무도 로그인시키지 않습니다.
실행을 누르고 /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})
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
사용자와 계정의 모든 레슨
직접 연습해 보세요: Django 플레이그라운드