Sesión iniciada tras registrarse
Parte de la sección Usuarios y cuentas del Journey de Django de Coddy. Lección 5 de 16.
Un nuevo usuario se registra y, después, tiene que escribir en la página de inicio de sesión la contraseña que eligió hace unos segundos. La vista puede iniciar su sesión directamente.
login(request, user) de django.contrib.auth inicia una sesión para el usuario que le pasas, la misma sesión que inicia LoginView después de comprobar una contraseña. login() no comprueba nada, así que llámala solo para un usuario en quien tu código ya haya depositado su confianza. Un sitio de juegos inicia la sesión de un jugador cuando este abre el enlace de su correo electrónico de bienvenida:
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")En tu vista de registro, el usuario de confianza es el que devuelve form.save().
Desafío
Fácil- Después de un registro válido, el nuevo usuario inicia sesión y llega a
/. - Si el formulario rechaza un registro, no inicia sesión a nadie.
Pulsa Run, abre /signup/ y crea una cuenta: el encabezado dice Signed in as y tu nombre.
Pruébalo tú mismo
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})
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Usuarios y cuentas
1Quién está visitando
Quién está visitandoIniciar sesiónPractica por tu cuenta: Playground de Django