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

الصفحات

كيفية برمجة موقع لعرض الأخبار باستخدام Python Django

How to Code a News Display Website Using Python Django، نشر تطبيقات Django، خادم Gunicorn، خادم Nginx، تكوين Nginx لـ Django، جمع الملفات الثابتة Django، نشر Django على Linux، حفظ بيانات Django، تخزين بيانات الأخبار Django، تخزين بيانات التصنيفات Django، Django ORM، Django Admin، إنشاء مستخدم مسؤول Django، إضافة أخبار Django Admin، إضافة تصنيفات Django Admin، استخدام slugify Django، مسارات URL Django، تعريف مسارات Django، ربط طرق العرض بمسارات URL Django، طرق عرض Django، قائمة الأخبار Django view، تفاصيل الخبر Django view، أخبار التصنيف Django view، قوالب Django، إنشاء قوالب Django، قائمة الأخبار Django HTML، تفاصيل الخبر Django HTML، أخبار التصنيف Django HTML، نماذج Django، تعريف نماذج Django، نماذج الأخبار Django، نماذج التصنيفات Django، إنشاء تغييرات Django، تنفيذ التغييرات Django، إعداد Django، إنشاء مشروع Django، إنشاء تطبيق Django، برمجة موقع أخبار بايثون، تطوير موقع Django للأخبار، موقع أخبار بسيط Django، واجهة مستخدم موقع أخبار Django، نماذج Django للأخبار، عرض الأخبار Django، تصنيفات الأخبار Django، حفظ بيانات الأخبار Django، نشر تطبيقات Django، برمجة موقع لعرض الأخبار، Python Django، كيفية برمجة موقع لعرض الأخبار باستخدام Python Django، خادم Gunicorn، خادم Nginx، تكوين Nginx لـ Django، تطوير موقع Django للأخبار، نماذج Django،




كيفية برمجة موقع لعرض الأخبار باستخدام Python Django



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


خطوات برمجة موقع لعرض الأخبار باستخدام Python Django



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

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

* تأكد من تثبيت Python و pip على جهازك. ثم قم بتثبيت Django :
pip install django
--
* أنشئ مشروع Django جديدًا باسم news_site :
django-admin startproject news_site
cd news_site
--
* أنشئ تطبيقًا داخل المشروع باسم news :
python manage.py startapp news
--

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

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


        


from django.db import models
from django.utils import timezone

class Category(models.Model):
    name = models.CharField(max_length=100, unique=True)

    def __str__(self):
        return self.name

class Article(models.Model):
    title = models.CharField(max_length=255)
    slug = models.SlugField(unique=True)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    content = models.TextField()
    pub_date = models.DateTimeField(default=timezone.now)
    image = models.ImageField(upload_to='news/', blank=True, null=True)

    def __str__(self):
        return self.title

    class Meta:
        ordering = ['-pub_date']


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

Python

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

* قم بإنشاء التغييرات وتنفيذها :

python manage.py makemigrations news
python manage.py migrate
--

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

أنشئ مجلدًا باسم templates داخل مجلد تطبيق news. ثم أنشئ ملفات HTML التالية :
news/templates/news/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.category.name }} | تاريخ النشر: {{ article.pub_date }}</p>
                {% if article.image %}
                    <img src="{{ article.image.url }}" alt="{{ article.title }}" width="200">
                {% endif %}
                <p>{{ article.content|truncatewords:50 }} <a href="{% url 'article_detail' article.slug %}">اقرأ المزيد</a></p>
            </li>
        {% empty %}
            <li>لا توجد أخبار متاحة حاليًا.</li>
        {% endfor %}
    </ul>

    <h2>تصنيفات الأخبار</h2>
    <ul>
        {% for category in categories %}
            <li><a href="{% url 'category_articles' category.slug %}">{{ category.name }}</a></li>
        {% endfor %}
    </ul>
</body>
</html>


* news/templates/news/article_detail.html: لعرض تفاصيل الخبر :
HTML

<!DOCTYPE html>
<html>
<head>
    <title>{{ article.title }} - موقع الأخبار</title>
</head>
<body>
    <h1>{{ article.title }}</h1>
    <p>التصنيف: {{ article.category.name }} | تاريخ النشر: {{ article.pub_date }}</p>
    {% if article.image %}
        <img src="{{ article.image.url }}" alt="{{ article.title }}" width="400">
    {% endif %}
    <div class="content">
        {{ article.content|linebreaksbr }}
    </div>
    <p><a href="{% url 'article_list' %}">العودة إلى قائمة الأخبار</a></p>
</body>
</html>

--

* news/templates/news/category_articles.html :




 لعرض الأخبار ضمن تصنيف معين :


        

HTML

<!DOCTYPE html>
<html>
<head>
    <title>أخبار تصنيف {{ category.name }} - موقع الأخبار</title>
</head>
<body>
    <h1>أخبار تصنيف: {{ category.name }}</h1>
    <ul>
        {% for article in articles %}
            <li>
                <h2><a href="{% url 'article_detail' article.slug %}">{{ article.title }}</a></h2>
                <p>تاريخ النشر: {{ article.pub_date }}</p>
                {% if article.image %}
                    <img src="{{ article.image.url }}" alt="{{ article.title }}" width="200">
                {% endif %}
                <p>{{ article.content|truncatewords:50 }} <a href="{% url 'article_detail' article.slug %}">اقرأ المزيد</a></p>
            </li>
        {% empty %}
            <li>لا توجد أخبار في هذا التصنيف حاليًا.</li>
        {% endfor %}
    </ul>
    <p><a href="{% url 'article_list' %}">العودة إلى قائمة الأخبار الرئيسية</a></p>
</body>
</html>


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

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

        

Python

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

def article_list(request):
    articles = Article.objects.all()
    categories = Category.objects.all()
    context = {'articles': articles, 'categories': categories}
    return render(request, 'news/article_list.html', context)

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

def category_articles(request, slug):
    category = get_object_or_404(Category, slug=slug)
    articles = Article.objects.filter(category=category)
    categories = Category.objects.all()
    context = {'category': category, 'articles': articles, 'categories': categories}
    return render(request, 'news/category_articles.html', context)



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

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

from django.urls import path
from . import views
from django.utils.text import slugify

urlpatterns = [
    path('', views.article_list, name='article_list'),
    path('<slug:slug>/', views.article_detail, name='article_detail'),
    path('category/<slug:slug>/', views.category_articles, name='category_articles'),
]

--

* قم بتضمين مسارات تطبيق news في ملف news_site/urls.py:
Python

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('news.urls')), # تضمين مسارات تطبيق news
]

--

الخطوة 6: إضافة بعض الأخبار والتصنيفات الأولية (اختياري)

يمكنك استخدام Django Admin لإضافة بعض الأخبار والتصنيفات الأولية إلى قاعدة البيانات. 
قم بإنشاء مستخدم مسؤول:
python manage.py createsuperuser

* ثم قم بتشغيل خادم التطوير:
python manage.py runserver
قم بزيارة http://127.0.0.1:8000/admin/ وقم بتسجيل الدخول لإضافة التصنيفات والأخبار.
 تأكد من ملء حقل slug بشكل فريد لكل تصنيف وخبر 
(يمكنك استخدام دالة slugify من django.utils.text لإنشاء slugs تلقائيًا).

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

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

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

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

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


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