login_required وحماية العروض
تقييد الصفحات على المستخدمين المصادق عليهم
login_required وحماية العروض درس مجاني في Django Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Django Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Django Academy 4 دروس في المجموع.
بعض الصفحات خاصة
يجب ألا تُفتح لوحة المعلومات أو صفحة الملف الشخصي إلا للمستخدمين المسجّلين دخولهم. يجعل Django حماية هذه الواجهات بسيطة ومتسقة. 🚧
التعرّف إلى login_required
تحمي مُزينة login_required الواجهة؛ إذ يُعاد توجيه الزوار غير المسجّلين تلقائيًا إلى صفحة تسجيل الدخول.
from django.contrib.auth.decorators import login_requiredتزيين واجهة
ضعوا @login_required مباشرةً فوق دالة الواجهة. يكفي هذا السطر الواحد لقفل الصفحة وحمايتها.
@login_required
def dashboard(request):
return render(request, "dashboard.html")إلى أين يُرسل الزوار
عند رفض الوصول، يعيد Django التوجيه إلى عنوان URL الموجود في LOGIN_URL. اضبطوه في الإعدادات ليصل الزائر إلى صفحة تسجيل الدخول.
LOGIN_URL = "/accounts/login/"المعامل next
تضيف إعادة التوجيه قيمة استعلام next تتضمن عنوان URL الأصلي، ليعود المستخدم بعد تسجيل الدخول إلى الصفحة التي أرادها. 🎯
حماية الواجهات المستندة إلى الفئات
بالنسبة إلى الواجهات المستندة إلى الفئات، استخدموا LoginRequiredMixin بدلًا من المُزينة. أدرجوه أولًا بين الفئات الأساسية.
from django.contrib.auth.mixins import LoginRequiredMixinموضع Mixin مهم
يجب أن يأتي LoginRequiredMixin قبل الواجهة العامة في تعريف الفئة، وإلا فلن تُطبّق الحماية.
class Dashboard(LoginRequiredMixin, TemplateView):
template_name = "dashboard.html"التحقق داخل الواجهة
قد تحتاجون أحيانًا إلى التحكم اليدوي. اقرأوا request.user.is_authenticated واتخذوا المسار بأنفسكم بدلًا من استخدام المُزينة.
if not request.user.is_authenticated:
return redirect("login")الصلاحيات توفر حماية أوسع
لفرض حق محدد، وليس مجرد تسجيل الدخول، استخدموا permission_required. فهو يتحقق من امتلاك المستخدم للصلاحية المحددة.
from django.contrib.auth.decorators import permission_requiredإخفاء الروابط في القوالب
في القوالب، أحيطوا الروابط الخاصة بـ user.is_authenticated حتى لا يرى الضيوف أزرارًا لا يمكنهم استخدامها.
الحماية متعددة الطبقات
إخفاء الرابط ليس أمانًا حقيقيًا. احموا الواجهة نفسها دائمًا، إذ يستطيع المستخدمون كتابة أي عنوان URL مباشرةً.
تحقق سريع
ما الإعداد الذي يحدد المكان الذي ترسل إليه login_required المستخدمين غير المسجّلين؟
مراجعة: حماية الواجهات
قفلتم الصفحات باستخدام login_required وLoginRequiredMixin، وضبطتم LOGIN_URL، وتعلمتم حماية الواجهات لا مجرد إخفاء الروابط. ✅
تعلم Python مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «login_required وحماية العروض» مجاني؟
نعم — نص درس «login_required وحماية العروض» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Django Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Django Academy 4 دروس في المجموع.
ماذا ستتعلم في «login_required وحماية العروض»؟
تقييد الصفحات على المستخدمين المصادق عليهم تتمرن على Django Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Django Academy؟
لا تُشترط خبرة سابقة. Django Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «login_required وحماية العروض»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Django Academy هذا؟
نعم. كل درس في Django Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- نموذج User و authenticate()
- login و logout وعروض المصادقة
- التسجيل باستخدام UserCreationForm
- login_required وحماية العروض