Menu
CoddyTech

Sudah Masuk Setelah Mendaftar

Termasuk bagian Pengguna dan Akun dalam perjalanan Django di Coddy. Pelajaran 5 dari 16.

Pengguna baru mendaftar, lalu harus mengetik kata sandi yang baru saja dipilihnya beberapa detik sebelumnya di halaman login. View dapat memasukkannya sendiri.

login(request, user) dari django.contrib.auth memulai sesi untuk pengguna yang kamu berikan, sesi yang sama dengan yang dimulai LoginView setelah memeriksa kata sandi. login() tidak memeriksa apa pun, jadi panggil fungsi ini hanya untuk pengguna yang sudah dipercaya oleh kodemu. Situs game memasukkan pemain saat mereka membuka tautan dari email sambutan:

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

Di view pendaftaranmu, pengguna tepercaya adalah pengguna yang dikembalikan oleh form.save().

challenge icon

Tantangan

Mudah
  • Setelah pendaftaran berhasil, pengguna baru masuk dan diarahkan ke /.
  • Pendaftaran yang ditolak formulir tidak membuat siapa pun masuk.

Tekan Jalankan, buka /signup/ dan buat akun: header menampilkan Signed in as dan namamu.

Coba sendiri

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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pengguna dan Akun

Latihan sendiri: Playground Django