كيفية إدارة ملفات الوسائط (Media Files) في Django

Nov. 3, 2023 * تيتو 4 تك

ملفات الوسائط أو Media Files في Django تشير إلى الملفات التي تُستخدم للتعامل مع المحتوى الوسائطي في تطبيق Django. هذه الملفات تشمل الصور ومقاطع الفيديو والملفات الصوتية وأي نوع آخر من المحتوى الوسائطي الذي يتم تخزينه وإدارته داخل تطبيق الويب الخاص بك.

 

 

في Django، يمكن تعريف ملفات الوسائط على أنها تلك الملفات التي تُحَمَّل من قبل المستخدمين. على سبيل المثال:

1. رفع الصور وملفات PDF وملفات المستندات وما إلى ذلك في أثناء نشر منشور.

2. صور المنتجات في مواقع التجارة الإلكترونية.

3. صورة الملف الشخصي للمستخدم. إلخ...

وكما هو الحال مع الملفات الثابتة (Static Files)، لخدمة ملفات الوسائط، علينا إضافة بعض التكوينات في ملف settings.py الخاص بنا.

 

تكوينات ملفات الوسائط (Media Files Configurations):

تعتمد ملفات الوسائط على تكوينين أساسيين وهما:

* MEDIA_ROOT

* MEDIA_URL

ويرجى الانتباه إلى أنه لم يتم تعيين أي من هذه التكوينات بشكل افتراضي.

أولاً - إعداد MEDIA_ROOT

يحتوي على المسار المطلق لنظام الملفات حيث ستُحَمَّل ملفات الوسائط. يقبل هذا الإعداد سلسلة (string)، وليس قائمة أو صف.

1. قم بإنشاء دليل جديد باسم الوسائط داخل الدليل الجذر لمشروع Django، وهو المكان نفسه الذي يوجد به manage.py.

2. ثم بعد ذلك افتح ملف settings.py وأضف الكود التالي إلى نهاية الملف، أسفل STATICFILES_DIRS الذي عيناه مسبقًا.

 

MEDIA_ROOT = BASE_DIR / 'media'
 

 

ثانياً - إعداد MEDIA_URL

يعمل هذا الإعداد بشكل مشابه لـ STATIC_URL ويستخدم للوصول إلى ملفات الوسائط. أسفل إعداد MEDIA_ROOT مباشرةً، أضف الكود التالي إلى نهاية ملف settings.py.

 

MEDIA_URL = '/media/'

 

قم بتنزيل أي صورة تريدها واحفظها بتنسيق test.png في دليل الوسائط الذي أنشأته. للوصول إلى الملف، قم بكتابة الرابط التالي http://127.0.0.1:8000/media/test.png. ولكنك سوف تحصل على خطأ HTTP 404. لكن لماذا ظهر هذا الخطأ؟

المشكلة هي أن خادم تطوير Django لا يخدم ملفات الوسائط بشكل افتراضي. لجعل خادم تطوير Django يخدم بشكل ثابت، يتعين علينا إضافة نمط URL في ملف urls.py على مستوى الموقع.

افتح أولاً urls.py في دليل تكوين مشروع Django، ثم قم بتعديل ملف urls.py كالتالي:

 

from django.urls import path , include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('', include('blog.urls')),
    path('admin/', admin.site.urls),
    ]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

 

الآن قم بزيارة http://127.0.0.1:8000/media/test.png مجددا، هذه المرة من المفترض أن تكون قادرًا على رؤية الصورة التي حفظتها.

كما هو الحال مع الملفات الثابتة، لا يوصى باستخدام الطريقة المستخدمة هنا لخدمة ملفات الوسائط في بيئة الإنتاج. في الواقع، يمكنك استخدام خادم مثل Apache لخدمة كل من الوسائط والملفات الثابتة.

التسميات