تم تسجيل الدخول بعد إنشاء الحساب
جزء من قسم المستخدمون والحسابات في رحلة 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/ وأنشئ حسابًا: سيعرض الترويس Signed in as واسمك.
جرّب بنفسك
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})
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المستخدمون والحسابات
تدرّب بنفسك: Playground لـ Django