البرمجة

دليل استخدام لوحة إدارة جانغو

تطبيق عملي لتعلم جانغو – الجزء الثالث: موقع مدير جانغو Django Admin

يُعد إطار جانغو (Django) أحد أقوى أطر تطوير تطبيقات الويب المعتمدة على لغة البرمجة بايثون. ومن أبرز ميزاته التي تجعله يتفوق على العديد من أطر العمل الأخرى هو توفر لوحة إدارة مدمجة تعرف باسم Django Admin، والتي تسهل بشكل كبير عملية التعامل مع البيانات ونماذج قواعد البيانات دون الحاجة إلى برمجة واجهات مستخدم خاصة بها.

في هذا الجزء من السلسلة المخصصة للتطبيق العملي على Django، سنغوص في العمق لفهم لوحة إدارة جانغو، آلية عملها، طرق تهيئتها وتخصيصها، وأفضل الممارسات في التعامل معها ضمن مشاريع واقعية.


ما هو Django Admin؟

لوحة Django Admin هي واجهة ويب مدمجة تُولد تلقائيًا بمجرد إعداد مشروع جانغو، وتوفر أدوات كاملة لإدارة المحتوى والبيانات في الموقع. هذه اللوحة تُبنى استنادًا إلى النماذج (Models) التي يعرّفها المطور ضمن التطبيق، وتوفر واجهات جاهزة لإضافة وتعديل وحذف وعرض البيانات.


أهمية Django Admin في تطوير المشاريع

توفر لوحة إدارة جانغو فوائد عديدة منها:

  • توفير الوقت والجهد: بدلاً من تصميم لوحة تحكم من الصفر، توفر Django Admin واجهة جاهزة يمكن استخدامها مباشرة بعد تهيئة النماذج.

  • إدارة المستخدمين والأذونات: يمكن من خلالها التحكم في المستخدمين ومنح الصلاحيات بحسب الحاجة.

  • سهولة الاختبار وإدخال البيانات: تُعد أداة فعالة للمطورين لإدخال البيانات خلال مراحل تطوير واختبار التطبيقات.

  • التوسع والتخصيص: يمكن تخصيصها لتلائم واجهات المؤسسات والأساليب التجارية الخاصة.


تفعيل Django Admin في مشروع جانغو

بشكل افتراضي، يأتي Django Admin مدمجًا في كل مشروع جانغو جديد، ولكن يجب القيام ببعض الخطوات لضمان تشغيله بشكل صحيح:

1. تضمين django.contrib.admin في ملف الإعدادات

تأكد من أن تطبيق django.contrib.admin مُضاف إلى قائمة INSTALLED_APPS في ملف settings.py:

python
INSTALLED_APPS = [ ... 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ... ]

2. إعداد عنوان URL للوحة الإدارة

في ملف urls.py الرئيسي في المشروع، أضف السطر التالي:

python
from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ]

3. إنشاء المستخدم المشرف (superuser)

حتى تتمكن من الدخول إلى لوحة الإدارة، يجب إنشاء حساب مشرف:

bash
python manage.py createsuperuser

بعد إدخال اسم المستخدم والبريد وكلمة المرور، سيتم إنشاء الحساب بنجاح.

4. تشغيل السيرفر

يمكن تشغيل الخادم المحلي عبر الأمر:

bash
python manage.py runserver

ثم يمكن الوصول إلى لوحة الإدارة عبر الرابط:

arduino
http://127.0.0.1:8000/admin/

تسجيل النماذج في لوحة Django Admin

لجعل نموذج معين ظاهرًا في لوحة الإدارة، يجب تسجيله باستخدام واجهة admin.py الخاصة بالتطبيق.

مثال على نموذج بسيط في models.py:

python
from django.db import models class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField() published = models.BooleanField(default=False)

ولتسجيله في admin.py:

python
from django.contrib import admin from .models import Article admin.site.register(Article)

بعد ذلك، ستظهر فئة Article في لوحة Django Admin ويمكن إدارة بياناتها من خلال واجهة المستخدم الرسومية بسهولة.


تخصيص Django Admin

على الرغم من أن Django Admin تأتي جاهزة، إلا أنها قابلة للتخصيص لتتناسب مع احتياجات المشروع. يمكن تخصيص المظهر، الحقول، الفلاتر، والبحث، وحتى ربطها بنماذج ذات علاقات متعددة.

تخصيص العرض في قائمة العناصر

python
class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'published') list_filter = ('published',) search_fields = ('title',) admin.site.register(Article, ArticleAdmin)

استخدام الحقول المرتبطة Inline

إذا كان لديك نموذج تابع مثل التعليقات Comment تابعة لمقالة Article:

python
class Comment(models.Model): article = models.ForeignKey(Article, on_delete=models.CASCADE) text = models.TextField()

يمكن تضمين التعليقات داخل صفحة المقالة:

python
class CommentInline(admin.TabularInline): model = Comment extra = 1 class ArticleAdmin(admin.ModelAdmin): inlines = [CommentInline] admin.site.register(Article, ArticleAdmin)

التحكم في صلاحيات المستخدمين

تُعد لوحة Django Admin أداة قوية للتحكم في صلاحيات المستخدمين:

  • يمكن تعيين مستخدمين كمشرفين أو موظفين.

  • يمكن منح صلاحيات جزئية لإضافة أو تعديل أو حذف كائنات محددة.

  • يمكن استخدام مجموعات (Groups) لتجميع صلاحيات معينة.

ويمكن ضبط هذه الصلاحيات مباشرة من لوحة Django Admin في قسم “Users” و “Groups”.


جدول: مقارنة بين واجهات إدارة البيانات المختلفة

الميزة Django Admin إنشاء لوحة إدارة يدوية أدوات إدارة خارجية (مثل Wagtail)
التوفر الفوري
القابلية للتخصيص
سهولة التهيئة
واجهة مستخدم احترافية متوسطة تعتمد على التنفيذ عالية (في بعض الأدوات)
إدارة المستخدمين والأذونات يتطلب بناء يدوي
دعم العلاقات بين النماذج يتطلب جهد إضافي

التعامل مع العلاقات والحقول المعقدة

لوحة Django Admin قادرة على التعامل مع النماذج المعقدة التي تحتوي على علاقات ForeignKey, ManyToMany, و OneToOne. ويمكن تخصيص عرض هذه العلاقات بشكل دقيق:

استخدام raw_id_fields

في حالة العلاقات مع قواعد بيانات ضخمة، يُفضل استخدام raw_id_fields لتفادي قوائم منسدلة بطيئة:

python
class ArticleAdmin(admin.ModelAdmin): raw_id_fields = ('author',)

التعديل على واجهة لوحة الإدارة

يمكن تعديل شكل واجهة الإدارة بالكامل باستخدام ملفات CSS وHTML مخصصة، أو عبر مكتبات خارجية مثل:

هذه الأدوات توفر واجهات أكثر أناقة واحترافية يمكن تخصيصها لتلائم الهوية البصرية للمشروع أو المؤسسة.


حماية لوحة الإدارة

بما أن لوحة Django Admin تمنح صلاحيات واسعة لإدارة النظام، يجب تأمينها قدر الإمكان. وتشمل وسائل الحماية:

  • تغيير مسار الدخول من /admin/ إلى مسار آخر.

  • تفعيل المصادقة الثنائية (2FA).

  • استخدام شهادات SSL.

  • ضبط إعدادات ALLOWED_HOSTS وCSRF.


استخدام الإشعارات والعمليات المخصصة

يمكن للمطورين إضافة عمليات مخصصة داخل Django Admin، مثل أزرار تنفيذ أوامر على الكائنات المختارة.

مثال:

python
def mark_as_published(modeladmin, request, queryset): queryset.update(published=True) mark_as_published.short_description = "نشر المقالات المختارة" class ArticleAdmin(admin.ModelAdmin): actions = [mark_as_published]

التوسع باستخدام إدارة متعددة المواقع

يتيح جانغو إمكانية استخدام لوحة الإدارة لإدارة محتوى مواقع متعددة (Multi-site)، وذلك عبر استخدام تطبيق django.contrib.sites. كل نموذج يمكن ربطه بموقع معين، ويتم عرض المحتوى بحسب إعدادات الموقع المرتبطة.


التعامل مع ملفات الوسائط والتحميل

عند إدارة ملفات وصور عبر النماذج، مثل الصور الشخصية أو الوثائق، تدعم Django Admin تحميل هذه الملفات وعرضها، ولكن يجب ضبط إعدادات MEDIA_URL وMEDIA_ROOT في المشروع.


دمج Django Admin مع نظام تسجيل الأنشطة

يمكن توسيع لوحة الإدارة لتشمل خاصية تسجيل كل التعديلات التي تحدث على الكائنات، وذلك عبر مكتبات مثل:

هذه الأدوات تمكن من تتبع كل عملية إضافة أو تعديل أو حذف، وهو أمر بالغ الأهمية في الأنظمة الحساسة.


الاستفادة من الجداول والتحليل

يمكن بناء تقارير وتحليلات بسيطة باستخدام Django Admin، من خلال تخصيص القوائم وإضافة عمليات جمع وتحليل مباشرة على واجهة الإدارة.


الخلاصة

لوحة Django Admin ليست مجرد واجهة مؤقتة أو أداة لتسهيل التطوير، بل يمكن الاعتماد عليها كنظام إدارة متكامل في المشاريع الصغيرة والمتوسطة، بل وحتى في المشاريع الكبيرة التي لا تتطلب واجهات إدارة مخصصة بالكامل. مرونتها، قابليتها للتخصيص، والدمج السلس مع نماذج جانغو يجعلها أحد أقوى أدوات تطوير الويب في بيئة بايثون.


المراجع:

  1. Django Documentation – https://docs.djangoproject.com

  2. Django Admin Interface – GitHub https://github.com/fabiocaccamo/django-admin-interface