اذهب إلى المحتوى

البدء مع إطار العمل جانغو لإنشاء تطبيق ويب


هدى جبور

جانغو Django هو إطار عمل يُستعمَل في تطوير مواقع الويب كُتبَ بلغة بايثون، وهو مجاني ومفتوح المصدر، ويتسم بقابلية التوسع وإعادة الاستخدام والتطوير السريع واستقلالية المكونات، إذ يركز على تحليل التصميم إلى مكونات وظيفية أو منطقية مُفردة (استقلالية المكونات) مما يجعل التطبيقات أكثر مرونة وقابلية للتوسع والنمو وإعادة الاستخدام كما أنه يتسم بسرعة التطوير المعززة بميزات أمان مُدمجة.

يعتمد جانغو على النمط البنائي للبرمجيات نموذج-قالب-عرض Model-Template-View -تختصر إلى MTV- والمُستمد من النمط البنائي نموذج-عرض-متحكم model–view–controller -تختصر إلى MVC- . يتم تعريف النموذج Model على أنه مصدر مفرد ومحدد من البيانات، والعرض View على أنه عبارة عن البيانات التي يتم إظهارها للمستخدم، والقالب Template على أنه عبارة عن الآلية التي يستخدمها جانغو لتوليد صفحات HTML.

إن اعتماد جانغو على بنية نموذج-قالب-عرض تشجع على مبدأ عدم التكرار DRY programming وهو مبدأ يهدف إلى الحد من تكرار المعلومات من جميع الأنواع، وينص على أن "أي جزء في النظام ينبغي أن يكون معرّفاً في مكان واحد واضح مسؤول عن هذا الجزء".

سنتحدث في هذه المقالة عن تثبيت جانغو وكيفية تهيئة بيئته البرمجية على خادم أبنتو Ubuntu، لاستخدامها لاحقًا في تطوير مواقع وتطبيقات الويب.

بالنسبة لمواقع الويب الحيّة، سيكون لدينا بعض الأمور الإضافية، مثل الاتصال بقاعدة البيانات وإعداد اسم النطاق domain وإضافة مستويات أو طبقات أمنية.

هذا المقال جزء من سلسلة مقالات قصيرة حول كيفية إنشاء تطبيق ويب ليكون بمثابة مدونة وإليك فهرس كامل السلسلة:

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

قبل البدء بعمليات التثبيت والتهيئة، سوف تحتاج إلى:

الخطوة الأولى - تثبيت جانغو

هناك عدة طرق لتثبيت جانغو، ومدير حزم بايثون 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 للوصول للتطبيق من أي متصفح على حاسوبك.

بعد تحميل الصفحة، سترى ما يلي:

django-3-testsite01.png

هذا يؤكد أنه تم تثبيت جانغو بنجاح وأن مشروع الاختبار لدينا يعمل بنجاح.

للوصول إلى واجهة المُدير admin interface، أضف /admin/ إلى نهاية عنوان URL الخاص بك:

http://your_server_ip:8000/admin/
أو
http://127.0.0.1:8000/admin/

بالتالي سيتم نقلك إلى شاشة تسجيل الدخول:

django-admin-login.png

إذا أدخلت اسم المستخدم وكلمة المرور الخاصين بالمدير admin اللذين أنشأتهما مُسبقًا، فسيكون لديك صلاحية الوصول إلى قسم المُدير الرئيسي في الموقع:

django-admin-panel.png

عند الانتهاء من اختبار التطبيق، يمكنك الضغط على CTRL + C لإيقاف تنفيذ الأمر runserver.

وأخيرًا للخروج من بيئة بايثون التي أنشأتها، يجب عليك إلغاء تنشيطها من خلال أمر deactivate.

(env) sammy@ubuntu:$  deactivate

سيؤدي إلغاء تنشيط البيئة إلى إعادتك إلى الموقع الافتراضي في الطرفية.

خاتمة

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

ترجمة -وبتصرف- للمقال How To Install Django and Set Up a Development Environment on Ubuntu 20.04 لصاحبه Lisa Tagliaferri.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

بتاريخ On 26‏/8‏/2022 at 12:47 قال Zeina Makdisi:

شكرا لك على المقال 

لكن لتنشيط البيئة الافتراضية يجب استخدام 

Scripts/activate/. 

بدل env/bin/activate 

مرحباً زينة ، 

لتنشيط البيئة الأفتراضية على نظام تشغيل ويندوز يكون بكتابة الأمر التالي 

myproject\Scripts\activate.bat

و لتنشيط البيئة الأفتراضية على نظام تشغيل Unix/MacOS يكون بكتابة الأمر التالي

source myproject/bin/activate

بالتوفيق

رابط هذا التعليق
شارك على الشبكات الإجتماعية



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...