جانغو Django هو إطار عمل يُستعمَل في تطوير مواقع الويب كُتبَ بلغة بايثون، وهو مجاني ومفتوح المصدر، ويتسم بقابلية التوسع وإعادة الاستخدام والتطوير السريع واستقلالية المكونات، إذ يركز على تحليل التصميم إلى مكونات وظيفية أو منطقية مُفردة (استقلالية المكونات) مما يجعل التطبيقات أكثر مرونة وقابلية للتوسع والنمو وإعادة الاستخدام كما أنه يتسم بسرعة التطوير المعززة بميزات أمان مُدمجة.
يعتمد جانغو على النمط البنائي للبرمجيات نموذج-قالب-عرض Model-Template-View -تختصر إلى MTV- والمُستمد من النمط البنائي نموذج-عرض-متحكم model–view–controller -تختصر إلى MVC- . يتم تعريف النموذج Model على أنه مصدر مفرد ومحدد من البيانات، والعرض View على أنه عبارة عن البيانات التي يتم إظهارها للمستخدم، والقالب Template على أنه عبارة عن الآلية التي يستخدمها جانغو لتوليد صفحات HTML.
إن اعتماد جانغو على بنية نموذج-قالب-عرض تشجع على مبدأ عدم التكرار DRY programming وهو مبدأ يهدف إلى الحد من تكرار المعلومات من جميع الأنواع، وينص على أن "أي جزء في النظام ينبغي أن يكون معرّفاً في مكان واحد واضح مسؤول عن هذا الجزء".
سنتحدث في هذه المقالة عن تثبيت جانغو وكيفية تهيئة بيئته البرمجية على خادم أبنتو Ubuntu، لاستخدامها لاحقًا في تطوير مواقع وتطبيقات الويب.
بالنسبة لمواقع الويب الحيّة، سيكون لدينا بعض الأمور الإضافية، مثل الاتصال بقاعدة البيانات وإعداد اسم النطاق domain وإضافة مستويات أو طبقات أمنية.
هذا المقال جزء من سلسلة مقالات قصيرة حول كيفية إنشاء تطبيق ويب ليكون بمثابة مدونة وإليك فهرس كامل السلسلة:
- البدء مع إطار العمل جانغو لإنشاء تطبيق ويب
- إنشاء تطبيق جانغو وتوصيله بقاعدة بيانات
- إنشاء نماذج جانغو Django Models وربطها بقاعدة البيانات
- تنشيط واجهة مدير جانغو والاتصال بها
- معالجة طلبات الويب عبر العروض views في تطبيق جانغو
المتطلبات الأساسية
قبل البدء بعمليات التثبيت والتهيئة، سوف تحتاج إلى:
- حساب مستخدم عادي مع صلاحيات sudo، مُهيّأ مسبقًا على خادم أبونتو 20.04، انظر مقال التهيئة الأولية لخادم أوبونتو.
- تثبيت بايثون 3، مع بيئة برمجة افتراضية، انظر مقال كيفية تثبيت بايثون 3 وإعداد بيئته البرمجية على خادم أوبنتو.
الخطوة الأولى - تثبيت جانغو
هناك عدة طرق لتثبيت جانغو، ومدير حزم بايثون pip
داخل بيئة افتراضية، إذ البيئة الافتراضية virtualenv
هي عبارة عن بيئة تطوير برمجية معزولة عما حولها، والتي تسمح لنا بتثبيت البرامج وحزم بايثون بداخلها، وبالتالي تمنع تفاعل هذه البرامج والحزم مع البيئة العامة للخاد
سننشئ الآن المجلد الذي سيحتوي على تطبيق جانغو بداخل المجلد الرئيسي للخادم، وذلك من خلال الأمر mkdir
، وسنعطيه اسمًا (يمكنك وضع اسم آخر)، ثم سننتقل إليه من خلال الأمر cd
:
$ mkdir django-apps $ cd django-apps
الآن، بعد أن تنتقل إلى المجلد الذي أنشأته django-apps، أنشئ بيئتك الافتراضية، وهنا سنسميها البيئة العامة env (الاسم اختياري، لكن يُفضل أن يكون ذو معنى).
$ virtualenv env
إن لم تكن أداة virtualenv
مثبتة لديك، فثبتها باتباع توثيق خطوات التثبيت من الموقع الرسمي.
الآن، نشّط البيئة الافتراضية باستخدام الأمر التالي:
$ . env/bin/activate
في حال تغيرت البادئة في سطر الأوامر إلى (env)
، فهذا يعني أن بيئتك تم تنشيطها، وستظهر لك في سطر الأوامر مشابهةً لما يلي:
(env) sammy@ubuntu:$
بعد أن أصبحنا في داخل البيئة، نُثبت حزمة جانغو من خلال مُدير الحزم pip
:
(env) sammy@ubuntu:$ pip install django
تحقق الآن من نجاح التثبيت:
(env) sammy@ubuntu:$ django-admin --version
يجب أن تحصل على خرج مُشابه للخرج التالي:
3.0.6
بعد الانتهاء من تثبيت جانغو على خادمك، يمكنك البدء بإنشاء مشروع كتجربة لكي تتأكد من أن كل شيء يعمل بنجاح.
الخطوة الثانية - ضبط إعدادات جدار الحماية
إذا كان لديك خادم تمت تهيئته أو كان لديك جدار حماية firewall يعمل على خادمك، فسنحتاج إلى فتح المنفذ الذي سنستخدمه في جدار الحماية الخاص بخادمنا. بالنسبة لجدار حماية UFW، يمكنك فتح المنفذ بالأمر التالي:
(env) sammy@ubuntu:$ sudo ufw allow 8000
لمزيد من التفاصيل، انظر مقال أساسيات UFW: قواعد وأوامر شائعة للجدار الناري.
إذا كنت تستخدم جدران حماية DigitalOcean، فيمكنك اختيار بروتوكول HTTP من قواعد جدار الحماية الداخلي Inbound firewall rules (تحدد قواعد جدار الحماية الداخلي حركة المرور المسموح بها للخادم على أي منافذ ومن أي مصادر).
الخطوة الثالثة - بدء المشروع
بإمكانك الآن إنشاء تطبيق باستخدام مُدير-جانغو django-admin
وهو أمر يُستخدَم لإنجاز المهام الإدارية في بايثون، ثم يمكنك استخدام الأمر startproject
لإنشاء بنية مجلد المشروع من أجل موقع الويب الذي سنُنشئه.
نفّذ الأمر التالي (اسم المشروع testsite
اختياري) داخل مجلد django-apps:
(env) sammy@ubuntu:$ django-admin startproject testsite
سيؤدي تشغيل الأمر السابق إلى تسمية مجلد المشروع وحزمة المشروع بالاسم المحدد (أي في حالتنا السابقة سيكون testsite)، وسيتم إنشاء المشروع في المجلد الذي تم تنفيذ الأمر فيه. وفي حال تم تحديد مسار مجلد الوجهة، سوف يعتبره جانغو مجلد المشروع، وسيُنشئ ملف الإدارة manager.py وحزمة المشروع بداخله.
بعد ذلك يمكنك الإطلاع على ملفات المشروع التي تم إنشاؤها من خلال الانتقال إلى مجلد المشروع testsite
، ثم تنفيذ الأمر ls
لعرض قائمة الملفات الموجودة فيه:
(env) sammy@ubuntu:$ cd testsite (env) sammy@ubuntu:$ ls
الخرج:
manage.py testsite
ستلاحظ أن المجلد يحتوي على ملف الإدارة manage.py، والثاني هو مجلد باسم testsite يشبه ملف الإدارة ملف مُدير- جانغو، إذ أنه يضع حزمة المشروع في متغير البيئة sys.path
. يؤدي ذلك أيضًا إلى تحديد متغير البيئة DJANGO_SETTINGS_MODULE
للإشارة إلى ملف الإعدادات settings.py الخاص بالمشروع.
يمكنك استعراض محتويات ملف الإدارة في الطرفية terminal عن طريق استخدام الأمر less
:
(env) sammy@ubuntu:$ less manage.py
عندما تنتهي من الاطلاع عليه، اضغظ على المفتاح q
لإنهاء عرض الملف.
بعد ذلك انتقل إلى مجلد testsite لرؤية الملفات التي تم إنشاؤها:
(env) sammy@ubuntu:$ cd testsite/
نفذ الآن الأمر ls
لعرض قائمة الملفات الموجودة في المجلد الحالي:
(env) sammy@ubuntu:$ ls
سترى أربعة ملفات:
__init__.py asgi.py settings.py urls.py wsgi.py
سنتحدث الآن عن كل ملف من هذه الملفات:
- ملف التهيئة init.py: تمثل نقطة الدخول لمشروع بايثون الخاص بك.
-
ملف
asgi.py
: يحتوي على إعدادات التهيئة للنشر الاختياري optional deployment لواجهة بوابة الخادم غير المتزامن Asynchronous Server Gateway Interface (تختصر إلى ASGI)، ويعتبر معيارًا للتطبيقات التي تكون متزامنة أو غير متزامنة. - ملف الإعدادات settings.py: يحتوي على جميع قيم التهيئة التي يحتاجها تطبيق الويب الخاص بك لكي يعمل، مثل إعدادات قاعدة البيانات، وإعدادات التسجيل logging، ومكان العثور على الملفات الثابتة static files، ومفاتيح واجهة برمجة التطبيقات API إذا كنت تعمل مع إحداها …إلخ. ويتيح لجانغو معرفة هذه الإعدادات.
- ملف العناوين urls.py: يمكن تشبيه هذا الملف بدفتر عناوين لموقع الويب الخاص بك، حيث يخزن كل عناوين الويب لموقعك، ويربطها بعروض views أو أي ملف urls-conf آخر لتطبيق معين.
- ملف wsgi.py: يحتوي على تهيئة واجهة بوابة خادم الويب Web Server Gateway Interface (تختصر إلى WSGI)، والذي يعتبر معيارًا لتطبيقات بايثون المتزامنة.
اقتباسملاحظة: بإمكانك تعديل ملفات asgi.py أو wsgi.py في أي وقت لتناسب احتياجات النشر الخاصة بك.
الآن، يمكنك استخدام أمر التهجير migrate
مع ملف manage.py لتهجير قاعدة البيانات (في هذا المثال نستخدم SQLite)، إذ يُطبق التهجير أي تغييرات أجريتها في نماذج جانغو على مخطط قاعدة البيانات:
(my_env) $ python manage.py migrate
الخطوة الرابعة - ضبط إعدادات جانغو
يمكنك الآن تشغيل الخادم وعرض موقع الويب على مضيف معين ومنفذ من خلال تنفيذ الأمر runserver
. ستحتاج إلى إضافة عنوان IP للخادم الخاص بك إلى قائمة ALLOWED_HOSTS
في ملف الإعدادات settings.py.
إن ALLOWED_HOSTS
عبارة عن قائمة تحتوي على سلاسل نصيّة strings، وكل سلسلة من هذه السلاسل يمثل اسم مضيف أو نطاق يمكن لموقع جانغو أن يُخدّمه، وهو إجراء أمني لمنع هجمات حقن ترويسة HTTP أو كما تسمى "HTTP Host header attacks".
يمكنك استخدام أي محرر نصوص تُفضله لإضافة عنوان IP الخاص بك. مثلًا، إذا كنت تستخدم المحرر نانو nano، يمكنك تنفيذ الأمر التالي:
(env) sammy@ubuntu:$ nano ~/django-apps/testsite/testsite/settings.py
بعد تنفيذ الأمر، ستحتاج إلى الانتقال إلى قائمة المُضيفين المسموح بهم Allowed Hosts في الملف، وإضافة عنوان IP الخاص بخادمك ضمن قائمة ALLOWED_HOSTS
، ولا تنس وضع العنوان ضمن علامتي اقتباس.
""" Django settings for testsite project. Generated by 'django-admin startproject' using Django 2.0. ... """ ... # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True # Edit the line below with your server IP address ALLOWED_HOSTS = ['your-server-ip'] ...
يمكنك حفظ التغيير والخروج من المحرر nano بالضغط مع الاستمرار على الاختصار CTRL + x ثم الضغط على الزر y. بعد ذلك، سنتمكن لاحقًا من الوصول إلى تطبيق الويب الخاص بنا عبر المتصفح.
الآن، سننشئ مُستخدمًا بصفة مُدير (مسؤول) administrative user، لكي تتمكن من استخدام واجهة المُدير admin interface وسننجز ذلك من خلال الأمر createuperuser
:
(my_env) $ python manage.py createsuperuser
سيُطلب منك بعدها تحديد اسم مستخدم وعنوان بريد إلكتروني وكلمة مرور للمستخدم الذي أنشأته.
الخطوة الخامسة - الوصول إلى تطبيق الويب
بعد الانتهاء من التهيئة، انتقل إلى المجلد الذي يوجد فيه ملف الإدارة manager.py:
(env) sammy@ubuntu:$ cd ~/django-apps/testsite/
بعد ذلك، نفذ الأمر التالي (استبدل "server-ip text" بعنوان IP الخادم الخاص بك):
(env) sammy@ubuntu:$ python manage.py runserver your-server-ip:8000
بعد ذلك، يمكنك الانتقال إلى الرابط التالي لمعرفة الشكل الذي يبدو عليه موقعك (لا تنسى استبدال "server-ip text" بعنوان IP الخادم الخاص بك).
http://your-server-ip:8000/
وإن كنت تعمل محليًا على حاسوبك، فيمكنك تشغيل الخادم للعمل محليًا بتمرير رقم المنفذ فقط بالشكل:
(my_env)$ python manage.py runserver 8000
وبذلك، يمكنك الانتقال إلى العنوان localhost:8000 أو http://127.0.0.1:8000 للوصول للتطبيق من أي متصفح على حاسوبك.
بعد تحميل الصفحة، سترى ما يلي:
هذا يؤكد أنه تم تثبيت جانغو بنجاح وأن مشروع الاختبار لدينا يعمل بنجاح.
للوصول إلى واجهة المُدير admin interface، أضف /admin/
إلى نهاية عنوان URL الخاص بك:
http://your_server_ip:8000/admin/ أو http://127.0.0.1:8000/admin/
بالتالي سيتم نقلك إلى شاشة تسجيل الدخول:
إذا أدخلت اسم المستخدم وكلمة المرور الخاصين بالمدير admin اللذين أنشأتهما مُسبقًا، فسيكون لديك صلاحية الوصول إلى قسم المُدير الرئيسي في الموقع:
عند الانتهاء من اختبار التطبيق، يمكنك الضغط على CTRL + C لإيقاف تنفيذ الأمر runserver
.
وأخيرًا للخروج من بيئة بايثون التي أنشأتها، يجب عليك إلغاء تنشيطها من خلال أمر deactivate
.
(env) sammy@ubuntu:$ deactivate
سيؤدي إلغاء تنشيط البيئة إلى إعادتك إلى الموقع الافتراضي في الطرفية.
خاتمة
تعلمت في هذه المقالة تثبيت جانغو وإعداد بيئة تطوير لبدء العمل على تطبيق جانغو الخاص بك، وبالتالي أصبح لديك الأساس اللازم للبدء في إنشاء تطبيقات ويب باستخدام جانغو.
ترجمة -وبتصرف- للمقال How To Install Django and Set Up a Development Environment on Ubuntu 20.04 لصاحبه Lisa Tagliaferri.
أفضل التعليقات
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.