Menu
CoddyTech

Accesso dopo la registrazione

Fa parte della sezione Utenti e account del percorso Django di Coddy. Lezione 5 di 16.

Un nuovo utente si iscrive, poi deve digitare nella pagina di accesso la password che ha scelto pochi secondi prima. La vista può farlo accedere direttamente.

login(request, user) da django.contrib.auth avvia una sessione per l'utente che gli passi, la stessa sessione che LoginView avvia dopo aver verificato una password. login() non verifica nulla, quindi chiamala solo per un utente di cui il tuo codice si è già fidato. Un sito di giochi fa accedere un giocatore quando apre il link ricevuto nell'email di benvenuto:

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")

Nella tua vista di iscrizione, l'utente considerato affidabile è quello restituito da form.save().

challenge icon

Sfida

Facile
  • Dopo una registrazione valida, il nuovo utente accede e viene reindirizzato a /.
  • Una registrazione rifiutata dal modulo non fa accedere nessuno.

Premi Run, apri /signup/ e crea un account: nell’intestazione compare Signed in as seguito dal tuo nome.

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Utenti e account

Esercitati da solo: Playground Django