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().
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})
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