العودة إلى المدونة

إنشاء نماذج Django: دليل تعليمي

إنشاء نماذج Django: دليل تعليمي

Django هو إطار عمل ويب معروف للتطوير السريع لمواقع وتطبيقات الويب الآمنة والقابلة للصيانة. تم بناؤه باستخدام Python، يسهل Django تطوير الويب، مما يتيح مزيدًا من الوقت والتركيز على كتابة التطبيقات دون إعادة اختراع العجلة في كل مرة. Django هو مشروع مجاني ومفتوح المصدر يتميز بتوثيق رسمي قوي، ودعم مجتمعي رائع، والكثير من الدعم المجاني والمدفوع.

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

المتطلبات الأساسية

نحن نعمل على نظام تشغيل يعتمد على Unix، ويفضل أن يكون خادم سحابي يعمل بنظام Ubuntu 20.04 كنظام قمنا بالاختبار عليه. إذا كنت ترغب في إعداد Django على بيئة مماثلة، فيرجى الرجوع إلى برنامجنا التعليمي، “كيفية تثبيت Django وإعداد بيئة تطوير على Ubuntu 20.04.”

الخطوة 1. بيئة تطوير Python

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

أولاً، افتح الطرفية (terminal) وشغّل الأوامر التالية:

بعد ذلك، قم بتثبيت pip – مدير حزم Python:

ثم، قم بتثبيت بعض حزم التطوير الإضافية:

Django Models 1

لإنشاء بيئة افتراضية، نحتاج أيضًا إلى وحدة Python venv :

الخطوة 2. تثبيت خادم MySQL

يعد MySQL نظامًا شائعًا لإدارة قواعد البيانات العلاقاتية. إنه مفتوح المصدر ومستقر وغني بالميزات. سنستخدم MySQL كخادم قاعدة بيانات لتطبيق Django الخاص بنا. قم بتثبيت MySQL باستخدام APT:

بعد ذلك، تحقق من التثبيت:

Django Models 2

هذا مجرد إعداد أساسي لـ MySQL بالخيارات الافتراضية. تحقق من الدليل الأكثر تعمقًا حول تثبيت وتكوين MySQL.

الخطوة 3. إعداد تطبيق Django

نحن الآن جاهزون لإنشاء تطبيق Django الخاص بنا. إذا كنت مهتمًا بعرض توضيحي أكثر تعمقًا لـ Django، فيرجى الرجوع إلى برنامجنا التعليمي، “تثبيت إطار عمل ويب Django على Ubuntu 20.04.”

بعد ذلك، قم بإنشاء دليل مخصص للتطبيق. يجب أن يعكس اسم الدليل اسم المشروع:

داخل دليل المشروع، قم بإنشاء بيئة افتراضية لـ Python باستخدام وحدة venv :

قم بتنشيط البيئة الافتراضية:

Django Models 3

قم بتثبيت Django باستخدام pip:

بعد ذلك، قم بإنشاء مشروع Django جديد باستخدام الأمر django-admin :

django-admin

الخطوة 4. تكوين تطبيق Django

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

ابدأ بتحرير ملف التكوين settings.py:

ثم، قم بتغيير المنطقة الزمنية:

TIME_ZONE

أضف الأجهزة المسموح لها بالوصول إلى خادم تطبيق Django:

ALLOWED_HOSTS

بعد ذلك، قم بتطبيق التغييرات:

Django Models 4

أخيرًا، قم بإنشاء مستخدم متميز (superuser) لتطبيق ويب Django الخاص بنا:

python manage.py

الخطوة 5. توصيل تطبيق Django بـ MySQL

للاتصال بـ MySQL، نحتاج إلى مكتبة موصل Python إضافية متوافقة مع Django. سنستخدم mysqlclient.

أولاً، تأكد من تثبيت الحزم اللازمة:

python3-dev

بعد ذلك، قم بتثبيت mysqlclient:

  • إنشاء قاعدة بيانات مخصصة

بالنسبة لتطبيقنا، نحتاج إلى إنشاء قاعدة بيانات مخصصة ومستخدم قاعدة بيانات مخصص. قم بتشغيل واجهة تفاعل MySQL كـ root:

sudo mysql -u rootأنشئ قاعدة بيانات مخصصة لتطبيق Django الخاص بنا:

ثم، قم بإنشاء مستخدم قاعدة بيانات مخصص لتطبيق Django:

أخيرًا، امنح المستخدم المخصص الصلاحيات الكاملة على قاعدة البيانات المخصصة:

GRANT ALL ON
  • تغيير تكوين Django لاستخدام MySQL

الآن، نحتاج إلى تعديل بعض تكوينات Django حتى يتمكن من استخدام MySQL كخادم قاعدة بيانات. افتح settings.py في محرر نصوص:

قم بالتمرير لأسفل إلى قسم DATABASES والصق الكود التالي:

DATABASES

بعد ذلك، قم بتحرير ملف تكوين MySQL بحيث يحتوي على بيانات اعتماد قاعدة البيانات اللازمة:

أضف الكتلة التالية في نهاية الملف:

Django Models 5

أعد تشغيل MySQL لتطبيق التغييرات:

الخطوة 6. إنشاء نموذج Django

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

في هذا الموقع، اطلب من Django إنشاء تطبيق جديد:

بعد الإنشاء، يجب أن تبدو شجرة الملفات كالتالي. هنا، سيحتوي الملف models.py على الأكواد الخاصة بنموذج Django المخصص لدينا:

Django Models 6

تحقق من المحتوى الحالي للملف:

cat models.py

للتوضيح، سنقوم بإنشاء نموذج لمنشورات المدونة باسم Post. وسوف يحتوي على الحقول التالية:

  • title: عنوان منشور المدونة.
  • slug: يخزن وينشئ عناوين URL صالحة لصفحات الويب.
  • content: نص منشور المدونة.
  • created_on: تاريخ إنشاء المنشور.
  • author: المستخدم الذي أنشأ المنشور.

افتح الملف models.py في محرر نصوص:

دعنا نستورد بعض واجهات برمجة التطبيقات (APIs) اللازمة لنموذجنا. بشكل افتراضي، يستورد واجهة برمجة تطبيقات النماذج. سنحتاج أيضًا إلى واجهة برمجة تطبيقات slugify لإنشاء الروابط اللطيفة (slugs)، و User للمصادقة، و reverse لإنشاء عناوين URL أفضل وأكثر مرونة:

بعد ذلك، أضف طريقة الفئة المسماة Post. وستحتوي على حقول قاعدة البيانات اللازمة مثل title, slug, content, created_on, و author:

نحن بحاجة إلى وظيفة لإنشاء عناوين URL وحفظ المنشور. هذا أمر مهم لأنه ينشئ روابط فريدة تطابق منشورات فريدة:

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

أخيرًا، سيكون لدينا ميزة نموذج Comment في هذا الملف. يتطلب ذلك إضافة فئة أخرى باسم Comment باستخدام models.Model كبنية لها. ستحتوي على حقول قاعدة البيانات التالية:

  • name: اسم المعلق.
  • email: البريد الإلكتروني للمعلق.
  • text: محتوى التعليق نفسه.
  • post: المنشور الذي تم كتابة التعليق عليه.
  • created_on: وقت إنشاء التعليق.

سيبدو الكود كالتالي:

عند هذه النقطة، سيكون ملف models.py الخاص بنا بهذا الشكل:

models.py

أخيرًا، احفظ الملف وأغلق المحرر.

الخطوة 7. تحديث إعدادات Django

تم إنشاء النموذج. ومع ذلك، نحتاج إلى تعديل بعض ملفات التكوين لتفعيل النموذج. داخل settings.py، نحتاج إلى إضافة نموذجنا تحت INSTALLED_APPS.

افتح settings.py في محرر نصوص:

قم بتسجيل الوحدة الجديدة تحت القسم INSTALLED_APPS:

INSTALLED_APPS

احفظ الملف وأغلق المحرر.

الخطوة 8. ترحيل التغييرات

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

سيقوم الأمر التالي بإنشاء جميع ملفات الترحيل اللازمة. سيعرض المخرج مواقع كل تلك الملفات داخل دليل المشروع:

makemigrations

سيقوم الأمر التالي بسرد جميع عمليات الترحيل الحالية:

Django Models 6

لاحظ أن جميع عمليات الترحيل مميزة بعلامة باستثناء 0001_initial الذي تم إنشاؤه كجزء من النموذجين Post و Comment.

سيوضح الأمر التالي استعلام SQL الذي سيقوم Django بتنفيذه لإجراء عمليات الترحيل:

sample_app

كل ما نحتاجه الآن هو تطبيق عمليات الترحيل. ستقوم عمليات الترحيل هذه بكتابة التغييرات في قاعدة البيانات:

migrate

الخطوة 9. التحقق من التغييرات

للتحقق من التغييرات، دعنا نلقي نظرة على قاعدة بيانات MySQL الخاصة بنا. ابدأ تشغيل واجهة تفاعل MySQL كمستخدم Django:

بعد ذلك، قم بتغيير قاعدة البيانات النشطة الحالية إلى قاعدة بيانات تطبيق Django:

اعرض قائمة بجميع الجداول من قاعدة البيانات:

أخيرًا، لرؤية محتوى أي من الجداول، استخدم استعلام DESCRIBE:

Django Models 7

قيود Django مع MySQL

عند استخدام MySQL كخادم قاعدة بيانات لتطبيق Django الخاص بك، هناك بعض الأشياء التي يجب وضعها في الاعتبار:

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

لهذا السبب يُنصح بشدة بموازنة خياراتك واختيار الخيار المناسب.

أفكار نهائية

يوضح هذا الدليل بنجاح كيفية إضافة وحدات إلى تطبيق Django الحالي. لقد استخدمنا MySQL كخلفية للتطبيق. كما يعرض بعض مفاهيم Django الأساسية مثل النماذج، وكيفية عمل الترحيل، وكيف يترجم Django النماذج إلى جداول قاعدة بيانات MySQL.

حوسبة سعيدة!

author

Hark Labs

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.