القائمة الرئيسية

الصفحات

كيفية برمجة نظام إدارة محتوى (CMS) باستخدام Python Django

How-to-Code-Content-Management-System-in-Python-Django، نظام إدارة محتوى (CMS)، برمجة نظام إدارة محتوى بايثون، تطوير CMS Django، نظام إدارة محتوى بسيط Django، واجهة مستخدم CMS Django، نماذج Django للمحتوى، عرض المحتوى Django، إضافة محتوى Django، تعديل محتوى Django، حفظ بيانات المحتوى Django، نشر تطبيقات Django لأنظمة إدارة المحتوى، إعداد Django، إنشاء مشروع Django، إنشاء تطبيق Django، نماذج Django، تعريف نماذج Django، نماذج الصفحات Django، نماذج المقالات Django، إنشاء تغييرات Django، تنفيذ التغييرات Django، قوالب Django، إنشاء قوالب Django، تفاصيل الصفحة Django HTML، قائمة المقالات Django HTML، تفاصيل المقالة Django HTML، طرق عرض Django، تفاصيل الصفحة Django view، قائمة المقالات Django view، تفاصيل المقالة Django view، مسارات URL Django، تعريف مسارات Django، ربط طرق العرض بمسارات URL Django، Django Admin، تسجيل النماذج في Django Admin، واجهة إدارة Django CMS، حفظ بيانات Django، تخزين بيانات الصفحات Django، تخزين بيانات المقالات Django، Django ORM، نشر تطبيقات Django، خادم Gunicorn، خادم Nginx، تكوين Nginx لـ Django، جمع الملفات الثابتة Django، نشر Django على Linux، برمجة نظام إدارة محتوى (CMS) باستخدام Python Django، كيفية برمجة نظام إدارة محتوى (CMS) باستخدام Python Django، How to Code a Content Management System (CMS) Using Python Django، كيفية برمجة نظام إدارة م توى (CMS) باستخدام جانغو، برمجة نظام إدارة محتوى بايثون، تطوير CMS Django، خادم Gunicorn، خادم Nginx، تكوين Nginx لـ Django، نشر Django على Linux،





كيفية برمجة نظام إدارة محتوى (CMS) باستخدام Python Django



هل تتطلع إلى تعلم كيفية برمجة نظام إدارة محتوى (CMS) قوي ومرن باستخدام Python Django؟
في هذا الدليل الشامل، سنكشف عن الخطوات الأساسية لإنشاء نظام
 بسيط ولكنه فعال لإدارة محتوى موقع الويب الخاص بك. سنبدأ بشرح
كيفية تصميم وإنشاء واجهة مستخدم سهلة الاستخدام في Django لإنشاء
 وتعديل وعرض المحتوى. ثم سنتناول كيفية تعريف نماذج البيانات في Django
 لتخزين أنواع مختلفة من المحتوى مثل الصفحات والمقالات بشكل منظم.
 بعد ذلك، سنوضح كيفية حفظ هذه البيانات في قاعدة البيانات باستخدام Django ORM. 
وأخيرًا، سنقدم نظرة عامة على كيفية نشر تطبيق Django ليصبح نظام إدارة المحتوى
 الخاص بك متاحًا عبر الإنترنت. تابع معنا لتتعلم كيفية برمجة نظام إدارة محتوى 
(CMS) باستخدام Python Django خطوة بخطوة.

خطوات برمجة نظام إدارة محتوى (CMS)


في هذا الدليل الشامل، سنستعرض خطوات بناء نظام إدارة محتوى (CMS) بسيط
 باستخدام لغة البرمجة Python وإطار العمل Django. سنغطي كل شيء
 بدءًا من تصميم وإنشاء واجهة المستخدم لإدارة وعرض المحتوى، مرورًا بتعريف
 نماذج البيانات لتخزين أنواع مختلفة من المحتوى، وصولًا إلى حفظ هذه البيانات ونشر التطبيق. 


الخطوة 1: إعداد بيئة التطوير وإنشاء مشروع Django

تأكد من تثبيت Python و pip على جهازك. ثم قم بتثبيت Django:
pip install django
--
* أنشئ مشروع Django جديدًا باسم simple_cms:
django-admin startproject simple_cms
cd simple_cms
--

* أنشئ تطبيقًا داخل المشروع باسم cms:
python manage.py startapp cms
--

الخطوة 2: تعريف نماذج البيانات (Models)

في ملف cms/models.py، سنقوم بتعريف نماذج البيانات الأساسية للصفحات والمقالات:


        

Python

from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
from django.template.defaultfilters import slugify

class Page(models.Model):
    title = models.CharField(max_length=255)
    slug = models.SlugField(unique=True, blank=True)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
    is_published = models.BooleanField(default=False)

    def __str__(self):
        return self.title

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.title)
        super().save(*args, **kwargs)

class Article(models.Model):
    title = models.CharField(max_length=255)
    slug = models.SlugField(unique=True, blank=True)
    body = models.TextField()
    pub_date = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
    is_published = models.BooleanField(default=False)

    def __str__(self):
        return self.title

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.title)
        super().save(*args, **kwargs)

    class Meta:
        ordering = ['-pub_date']


*  أضف تطبيق cms إلى قائمة INSTALLED_APPS في
 ملف simple_cms/settings.py:
Python

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'cms', # إضافة تطبيق cms هنا
]
--




* قم بإنشاء التغييرات وتنفيذها:
python manage.py makemigrations cms
python manage.py migrate
--

الخطوة 3: إنشاء واجهة المستخدم (Templates)

أنشئ مجلدًا باسم templates داخل مجلد تطبيق cms. ثم أنشئ ملفات HTML التالية:
cms/templates/cms/page_detail.html: لعرض تفاصيل الصفحة :
HTML

<!DOCTYPE html>
<html>
<head>
    <title>{{ page.title }} - نظام إدارة المحتوى</title>
</head>
<body>
    <h1>{{ page.title }}</h1>
    <div class="content">
        {{ page.content|linebreaksbr }}
    </div>
</body>
</html>
--

* cms/templates/cms/article_list.html: لعرض قائمة المقالات المنشورة :


        

HTML

<!DOCTYPE html>
<html>
<head>
    <title>آخر المقالات - نظام إدارة المحتوى</title>
</head>
<body>
    <h1>آخر المقالات</h1>
    <ul>
        {% for article in articles %}
            <li>
                <h2><a href="{% url 'article_detail' article.slug %}">{{ article.title }}</a></h2>
                <p>تاريخ النشر: {{ article.pub_date }} | بواسطة: {{ article.author.username }}</p>
                <p>{{ article.body|truncatewords:50 }} <a href="{% url 'article_detail' article.slug %}">اقرأ المزيد</a></p>
            </li>
        {% empty %}
            <li>لا توجد مقالات منشورة حاليًا.</li>
        {% endfor %}
    </ul>
</body>
</html>


* cms/templates/cms/article_detail.html: لعرض تفاصيل المقالة :
HTML

<!DOCTYPE html>
<html>
<head>
    <title>{{ article.title }} - نظام إدارة المحتوى</title>
</head>
<body>
    <h1>{{ article.title }}</h1>
    <p>تاريخ النشر: {{ article.pub_date }} | بواسطة: {{ article.author.username }}</p>
    <div class="article-body">
        {{ article.body|linebreaksbr }}
    </div>
    <p><a href="{% url 'article_list' %}">العودة إلى قائمة المقالات</a></p>
</body>
</html>
--

الخطوة 4: إنشاء طرق العرض (Views)

في ملف cms/views.py، سنقوم بإنشاء طرق العرض التي تتحكم 
في منطق التطبيق وتعرض القوالب:

        

Python

from django.shortcuts import render, get_object_or_404
from .models import Page, Article

def page_detail(request, slug):
    page = get_object_or_404(Page, slug=slug, is_published=True)
    context = {'page': page}
    return render(request, 'cms/page_detail.html', context)

def article_list(request):
    articles = Article.objects.filter(is_published=True).order_by('-pub_date')
    context = {'articles': articles}
    return render(request, 'cms/article_list.html', context)

def article_detail(request, slug):
    article = get_object_or_404(Article, slug=slug, is_published=True)
    context = {'article': article}
    return render(request, 'cms/article_detail.html', context)


الخطوة 5: تعريف مسارات URL (URLs)





في ملف cms/urls.py (إذا لم يكن موجودًا، قم بإنشائه):
Python

from django.urls import path
from . import views

urlpatterns = [
    path('<slug:slug>/', views.page_detail, name='page_detail'),
    path('articles/', views.article_list, name='article_list'),
    path('articles/<slug:slug>/', views.article_detail, name='article_detail'),
]
--

* قم بتضمين مسارات تطبيق cms في ملف simple_cms/urls.py:

Python

from django.contrib import admin
from django.urls import path, include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('cms.urls')), # تضمين مسارات تطبيق cms
]
--

الخطوة 6: إنشاء واجهة إدارة (Django Admin)

لتسهيل إضافة وتعديل المحتوى، سنقوم بتسجيل نماذج Page و Article
 في Django Admin. في ملف cms/admin.py:


        

Python

from django.contrib import admin
from .models import Page, Article

class PageAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'is_published', 'updated_at')
    prepopulated_fields = {'slug': ('title',)}
    list_filter = ('is_published',)
    search_fields = ('title', 'content')

class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'pub_date', 'author', 'is_published')
    prepopulated_fields = {'slug': ('title',)}
    list_filter = ('is_published', 'pub_date', 'author')
    search_fields = ('title', 'body')
    date_hierarchy = 'pub_date'

admin.site.register(Page, PageAdmin)
admin.site.register(Article, ArticleAdmin)


* قم بإنشاء مستخدم مسؤول إذا لم يكن لديك واحدًا بالفعل :
python manage.py createsuperuser
--

ثم قم بتشغيل خادم التطوير وقم بزيارة http://127.0.0.1:8000/admin/ لتسجيل الدخول وإدارة المحتوى.

الخطوة 7: حفظ النقاط (بيانات الصفحات والمقالات)

يتم حفظ بيانات الصفحات والمقالات في قاعدة البيانات تلقائيًا عند إنشائها
 وتعديلها من خلال واجهة Django Admin. Django ORM يتولى 
عملية التفاعل مع قاعدة البيانات وحفظ البيانات بناءً على تعريف النماذج الخاصة بك.

الخطوة 8: نشر التطبيق

لنشر تطبيق Django، يمكنك اتباع نفس الخطوات العامة المذكورة في 
قسم النشر في مثال المتجر الإلكتروني البسيط (باستخدام Gunicorn و Nginx أو
 أي خادم ويب و WSGI آخر تفضله). تأكد من تكوين خادم الويب الخاص بك
 لخدمة الملفات الثابتة التي تم جمعها بواسطة python manage.py collectstatic.

* الخلاصة
لقد سرنا خلال الخطوات الأساسية لبناء نظام إدارة محتوى (CMS) بسيط 
باستخدام Python Django. بدءًا من إعداد المشروع وتعريف نماذج البيانات،
 مرورًا بإنشاء واجهة المستخدم وطرق العرض والمسارات وواجهة الإدارة، وصولًا إلى 
حفظ بيانات المحتوى ونشر التطبيق. يمكنك الآن توسيع هذا النظام بإضافة المزيد من الميزات مثل أنواع محتوى مخصصة،
 وإدارة المستخدمين والصلاحيات، ودعم الوسائط المتعددة، والقوالب المتقدمة.
 Django يوفر لك إطار عمل قويًا ومرنًا لبناء أنظمة إدارة محتوى متكاملة.




جدول المحتويات