Menu
CoddyTech

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 erst vor wenigen Sekunden ausgesucht hat. Die Ansicht 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 daher nur für einen Benutzer auf, dem dein Code bereits vertraut. Eine Spieleseite meldet einen Spieler an, wenn dieser 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 Registrierungsansicht ist der vertrauenswürdige Benutzer derjenige, den form.save() zurückgibt.

challenge icon

Aufgabe

Einfach
  • Nach einer gültigen Registrierung ist der neue Benutzer angemeldet und landet auf /.
  • Bei einer Registrierung, die das Formular ablehnt, wird niemand angemeldet.

Klicke auf „Run“, öffne /signup/ und erstelle ein Konto: In der Kopfzeile steht Signed in as und dein Name.

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})
quiz iconTeste dich selbst

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