تعتبر واجهة مدير المواقع او لوحة التحكم جزء اساسي من البنية التحتية لفئة واسعة من المواقع الإلكترونية وتعتبر هذه الواجهة أي (لوحة التحكم) واجهة محدودة الوصول وهي تقتصر على مسؤول الموقع فقط أو أشخاص موثوق بهم مصرح لهم بالوصول ويمكن القيام بالكثير من الأمور على واجهة التحكم مثل إضافة،تعديل،حذف محتويات الموقع ومن أهم وأشهر الأمثلة يمكننا كتابة ونشر مواضبيع جديدة على مدونتك.
ولكن هناك مشكلة مع واجهة المدراء وهي الشعور بالملل عند العمل على إنشاءها ، فنحن نحب تطوير الويب عندما يتعلق الامر بواجهة الموقع الخاصة بالزوار حيث يمكن إضافة أو حذف أمور وكل على حسب إبداعه ولكن عندما يتعلق اﻷمر بواجهة التحكم فالأمر واضح وهو لا يتغير من موقع الى أخر فكل ماعليك هو العمل على مصادقة المستخدمين ،عرض النماذج ، التحقق من صحة المدخلات وهلم جرا أليست عملية مملة ومكررة ؟
إذا ماهو جديد جانغو حول هذه العمليات المتكررة المملة ؟ جانغو يقوم بكل هذه العملية مع بضع سطور برمجية لتكون واجهة التحكم جاهزة للعمل .
اليوم سنتكلم عن واجهة المدير التلقائية الخاصة بجانغو وتعمل هذه الميزة من خلال قراءة البيانات الوصفية الموجودة في نموذجنا لتوفير واجهة قوية و جاهزة للإنتاج من قبل مسؤولي الموقع وسنتعلم كيفية تفعيلها وتخصيصها بما يناسبنا .
أرجوا أن تطالع على المواضيع السابقة عن جانغو :3،2،1، 4
حزمة django.contrib
لوحة التحكم التلقائية الخاصة بجانغو هي جزء من مجموعة كبيرة من وظائف جانغو والمسماة django.contrib وهو جزء من الكود المصدري الكامل لجانغو والذي يحتوي على إضافات مفيدة، ولفهم django.contribبشكل جيد يمكنك تشبيهه بالمكتبات الإفتراضية التي تاتي مع بايثون عند أول تثبيت .
وتعتبر واجهة المدير اول جزء من django.contribوتقنيا تسمى django.contib.adminومن المميزات الاخرى لهذه الحزمة نظام توثيق المستخدم django.contrib.auth، دعم للجلسات المجهولة django.contrib.sessions،دعم لتعليقات المسنخدمين django.contrib.commentsكما ستتعرف على المزيد من مميزات هذه الحزمة كلما تعمقت في جانغو
لكي نقوم بإضافة وتعديل أو حذف المواضيع التي قمنا بإنشاء نماذجها من قبل علينا بإستخدام لوحة التحكم الخاصة بجانغو django admin .
ومن دون إطالة سنقوم بفتح ملف blog/admin.py ونقوم بحذف جميع محتوياته وإستبدالها بالكود التالي :
from django.contrib import admin from .models import Post admin.site.register(Post)
وكما لاحظتم قمنا بإستدعاء نموذج المواضيع الخاصة بالمدونة الذي قمنا بإنشاء في المرة السابقة وحتى نجعل من النموذج ظاهر على لوحة التحكم علينا بتسجيل النموذج من خلال السطر التالي :
admin.site.register(Post)
إستعمال لوحة التحكم
الأن يمكننا مشاهدة نموذجنا وطبعا بعد تشغيل السيرفر المحلي من خلال السطر
python manage.py runserver
ثم كتابة العنوان http://127.0.0.1:8000/admin على المتصفح وستكون النتيجة صفحة تسجيل الدخول :
لتسجيل الدخول نحن بحاجة الى إنشاء مستخدم ذات صلاحيات كاملة (مدير الموقع) نعود الى سطر الأوامر ونكتب السطر التالي :
python manage.py createsuperuser
ثم بكتابة إسم المستخدم بحروف أجنبية وبدون مسافات او حروف كبيرة وعنوان البريد الإلكتروني وكلمة المرور .
(myvenv) ~/pyarab$ python manage.py createsuperuser Username: kader Email address: admin@kader.com Password: Password (أعد كتابة كلمة المرور ): Superuser created successfully.
عد مرة اخرى الى المتصفح وقم بتسجيل الدخول بالمعلومات التي قمت بإختيارها لتظهر لك لوحة تحكم جانغو وهي تحتوي على التطبيق مدونة مع نموذج المواصيع الذي قمنا بإنشاءه أما غير ذلك فلا يوجد إلا نموذج المجموعات والمستخدمين وهما عبارة عن نماذج إفتراضية للوحة التحكم وكل نموذج لديه خيارين و هما الإضافة أو التعديل .
كما يوجد خاصية أخر الإجراءات التي تمت على لوحة التحكم .
حسنا بعدما أضفنا مجموعة من المواضيع وتجولنا قليلا في لوحة التحكم دعونا نتكلم عن أشياء اخرى .
ربما قد لاحظتم انه عند إضافة المواضيع وفي حالة نسيان حقل ما مثل عدم كتابة إسم الكاتب أو عنوان الموضوع ظهور رسالة خطأ :
من خلال الصورة السابقة نستخلص أن ملئ الحقول امر إلزامي ولا يمكن نشر الموضوع من دون حقول الفارغة .
ولكن في حالة إذا أردت أن تكون تلك الحقول إختيارية أي يمكن نشر الموضوع من دونها فما علينا إلا القيام ببعض التعديلات ، دعونا نجعل من عنوان الموضوع حقل إختياري .
ملاحظة: هناك بعض الحقول لا تقبل أن تكون فارغة حتى و لو قمنا بالتعديلات اللازمة وستظهر لك رسالة خطأ.
قم بفتح ملف blog/models.py وعدل السطر الخاص بعنوان المواضيع بإضافة blank=True في أخر السطر
title=models.CharField(max_length=200,blank=True)
وهنا نكون قد أخبرنا جانغو أنه حتى في حالة عدم كتابة عنوان الموضوع يمكنه حفظ أو نشر الموضوع لانه إفتراضيا جميع الحقول عبارة عن blank=False.
إلى هنا أكون قد إنتهيت من درس اليوم ولا أنصحكم بالإكتفاء به بل يحب البحث والقراءة المزيد حول الموضوع حتى تكتشف المزيد من الامور .