מחוברים לאחר ההרשמה
חלק מהיחידה משתמשים וחשבונות במסלול ה-Django של Coddy. שיעור 5 מתוך 16.
משתמש חדש נרשם, ואז צריך להקליד בדף הכניסה את הסיסמה שבחר לפני כמה שניות. התצוגה יכולה להכניס אותו למערכת בעצמה.
login(request, user) מתוך django.contrib.auth מתחילה הפעלה עבור המשתמש שמעבירים לה — אותה הפעלה ש-LoginView מתחילה אחרי בדיקת סיסמה. login() לא בודקת דבר, ולכן יש לקרוא לה רק עבור משתמש שהקוד שלך כבר אימת. אתר משחקים מכניס שחקן למערכת כשהוא פותח את הקישור מהודעת ברוכים הבאים שנשלחה אליו בדוא״ל:
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")בתצוגת ההרשמה שלך, המשתמש המאומת הוא זה ש-form.save() מחזירה.
אתגר
קלב־signup (notes/views.py), אחרי שמירת הטופס, יש לחבר את המשתמש החדש ולהפנות אל notes:list במקום אל login. אם הטופס נדחה, אף אחד לא יתחבר.
צור חשבון ב־/signup/: הכותרת מציגה Signed in as ואת שמך. אם השם תפוס, למשל ada, תופיע שגיאה במקום זאת.
נסו בעצמכם
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})
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה משתמשים וחשבונות
תרגלו בעצמכם: Django אונליין