Menu
CoddyTech

تم تسجيل الدخول بعد إنشاء الحساب

جزء من قسم المستخدمون والحسابات في رحلة 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().

challenge icon

التحدي

سهل
  • بعد التسجيل بنجاح، يُسجَّل دخول المستخدم الجديد وينتقل إلى /.
  • إذا رفض النموذج عملية التسجيل، فلن يُسجَّل دخول أي شخص.

اضغط على تشغيل، وافتح /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})
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المستخدمون والحسابات

تدرّب بنفسك: Playground لـ Django