فكرة المشروع
نظام إدارة المحتوى هو مشروع Backend تجريبي يهدف إلى محاكاة نظام يمكن استخدامه لإدارة ونشر المحتوى الرقمي بطريقة منظمة.
يسمح النظام بإدارة المقالات والتصنيفات والوسوم والمستخدمين، مع إمكانية تحديد حالة المقال قبل نشره، مثل مسودة أو منشور.
تطبيق مفاهيم Django وDatabase وORM والمصادقة والصلاحيات في مشروع عملي قريب من الأنظمة المستخدمة في التطبيقات الحقيقية.
أهم مميزات النظام
📝 إدارة المقالات
إنشاء المقالات وتعديلها وحذفها وإدارة حالتها.
📂 التصنيفات
تنظيم المقالات داخل تصنيفات مختلفة لتسهيل الوصول إليها.
🏷️ الوسوم
إضافة Tags للمقالات وتحسين عملية تصنيف المحتوى.
👤 المستخدمون
إدارة حسابات المستخدمين وصلاحيات الوصول للمحتوى.
🔐 الصلاحيات
التحكم في المستخدمين الذين يمكنهم إنشاء أو تعديل المحتوى.
🔎 البحث
البحث داخل المقالات وتصفيتها حسب التصنيف أو الوسوم.
التقنيات المستخدمة
بنية المشروع
يمكن تقسيم النظام إلى تطبيقات مستقلة، بحيث يكون لكل جزء من النظام مسؤولية واضحة.
content_manager/
│
├── manage.py
│
├── config/
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
│
├── users/
│ ├── models.py
│ ├── serializers.py
│ ├── views.py
│ └── urls.py
│
├── articles/
│ ├── models.py
│ ├── serializers.py
│ ├── views.py
│ └── urls.py
│
├── categories/
│ ├── models.py
│ ├── serializers.py
│ └── views.py
│
└── requirements.txt
هذا الأسلوب يجعل المشروع أسهل في القراءة والصيانة، كما يسمح بإضافة وظائف جديدة دون جعل جميع أجزاء النظام مترابطة بشكل غير ضروري.
نماذج البيانات
يمثل Model في Django جزءًا مهمًا من تصميم النظام، حيث يتم تعريف البيانات والعلاقات بينها من خلال Python.
class Article(models.Model):
title = models.CharField(
max_length=200
)
content = models.TextField()
status = models.CharField(
max_length=20,
default="draft"
)
created_at = models.DateTimeField(
auto_now_add=True
)
المثال السابق يوضح فكرة مبسطة لنموذج المقال، ويمكن توسيعه لاحقًا بإضافة الكاتب والتصنيف والوسوم وغيرها من الحقول.
قاعدة البيانات والعلاقات
يحتاج نظام المحتوى إلى مجموعة من العلاقات بين الكيانات الأساسية.
| الكيان | الوظيفة | العلاقة |
|---|---|---|
| User | المستخدمون والكتاب | ينشئ المقالات |
| Article | المقالات | مرتبط بالكاتب والتصنيف |
| Category | تصنيف المحتوى | يحتوي على عدة مقالات |
| Tag | الوسوم | يمكن أن يرتبط بعدة مقالات |
Django ORM
من أهم مميزات Django إمكانية التعامل مع قاعدة البيانات من خلال ORM بدل كتابة SQL في كل عملية.
articles = Article.objects.filter(
status="published"
)
latest_articles = Article.objects.order_by(
"-created_at"
)[:5]
يساعد ORM على كتابة استعلامات بطريقة أكثر وضوحًا، مع الاستفادة من إمكانيات Django في التعامل مع النماذج والعلاقات.
REST API
يمكن توفير API تسمح للتطبيقات الأخرى بالتعامل مع المحتوى بشكل برمجي.
| Method | Endpoint | الوظيفة |
|---|---|---|
| GET | /api/articles/ | عرض المقالات |
| POST | /api/articles/ | إنشاء مقال |
| GET | /api/articles/{id}/ | عرض مقال محدد |
| PATCH | /api/articles/{id}/ | تعديل المقال |
| DELETE | /api/articles/{id}/ | حذف المقال |
المصادقة والصلاحيات
إدارة المحتوى تحتاج إلى نظام واضح للمصادقة والصلاحيات حتى لا يستطيع المستخدم تنفيذ عمليات غير مسموحة له.
- تسجيل الدخول والتحقق من هوية المستخدم.
- حماية عمليات إنشاء وتعديل المقالات.
- السماح للكاتب بتعديل المحتوى الذي يملكه.
- إعطاء المشرف صلاحيات إدارية إضافية.
- حماية الـ API من الوصول غير المصرح به.
دورة حياة المحتوى
يمكن أن يمر المقال بعدة مراحل قبل أن يصبح متاحًا للزوار.
Draft
كتابة المقال وحفظه كمسودة.
Review
مراجعة المحتوى قبل النشر.
Published
نشر المقال ليصبح متاحًا للقراءة.
Archived
أرشفة المحتوى عند الحاجة.
الأمان
يجب التعامل مع المحتوى وبيانات المستخدمين بطريقة آمنة، خصوصًا عندما يحتوي النظام على حسابات وصلاحيات إدارية.
- التحقق من صلاحيات المستخدم.
- عدم الثقة بالبيانات القادمة من العميل.
- حماية العمليات الحساسة.
- تخزين الأسرار ومفاتيح الإعدادات خارج الكود المصدري.
- استخدام HTTPS في بيئة الإنتاج.
الاختبارات
يمكن اختبار الوظائف الأساسية للنظام للتأكد من استقرار التطبيق قبل نشره.
- اختبار إنشاء المقالات.
- اختبار تعديل المحتوى.
- اختبار حذف المقالات.
- اختبار الصلاحيات.
- اختبار API endpoints.
- اختبار البحث والتصفية.
المفاهيم التي يوضحها المشروع
يجمع المشروع مجموعة من المفاهيم المهمة لمطور Python Backend.
Python
استخدام Python لبناء منطق التطبيق وتنظيم الكود.
Django
بناء تطبيق Backend باستخدام إطار Django.
ORM
التعامل مع البيانات والعلاقات باستخدام Django ORM.
REST API
توفير واجهات API للتعامل مع المحتوى.
حالة المشروع
هذا المشروع نموذج تجريبي ضمن معرض الأعمال في الموقع، ويمكن استبدال تفاصيله لاحقًا بمشروع حقيقي وإضافة رابط GitHub أو Demo وصور حقيقية عند توفرها.