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à accertato che sia attendibile. Un sito di giochi fa accedere un giocatore quando apre il link contenuto 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 attendibile è quello restituito da form.save().

challenge icon

Sfida

Facile

In signup (notes/views.py), dopo aver salvato il modulo, accedi con il nuovo utente e reindirizzalo a notes:list invece che a login. Se il modulo viene rifiutato, nessuno accede.

Crea un account su /signup/: nell'intestazione compare Signed in as seguito dal tuo nome. Se il nome è già utilizzato, ad esempio ada, viene mostrato un errore.

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