Nach der Registrierung angemeldet
Teil des Abschnitts Benutzer und Konten der Django-Journey von Coddy. Lektion 5 von 16.
Ein neuer Benutzer registriert sich und muss dann auf der Anmeldeseite das Passwort eingeben, das er sich Sekunden zuvor ausgesucht hat. Die View kann ihn selbst anmelden.
login(request, user) aus django.contrib.auth startet eine Sitzung für den Benutzer, den du übergibst – dieselbe Sitzung, die LoginView startet, nachdem es ein Passwort überprüft hat. login() überprüft nichts. Rufe es also nur für einen Benutzer auf, dem dein Code bereits vertraut. Eine Spieleseite meldet einen Spieler an, wenn er den Link aus seiner Willkommens-E-Mail öffnet:
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")In deiner Registrierungs-View ist der vertrauenswürdige Benutzer derjenige, den form.save() zurückgibt.
Aufgabe
EinfachMelde den neuen Benutzer in signup (notes/views.py) nach dem Speichern des Formulars an und leite ihn zu notes:list statt zu login weiter. Bei einem abgelehnten Formular wird niemand angemeldet.
Erstelle ein Konto unter /signup/: In der Kopfzeile steht Signed in as und dein Name. Bei einem bereits vergebenen Namen wie ada wird stattdessen ein Fehler angezeigt.
Probier es selbst
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})
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Benutzer und Konten
Übe selbstständig: Django-Playground