البرنامج التعليمي رقم 5: أنماط تصميم القارورة وأفضل الممارسات لتطبيقات الويب
البرنامج التعليمي رقم 6: برنامج تعليمي لـ Flask API مع مثال
يوضح هذا البرنامج التعليمي التمهيدي Python Flask ما هو Flask وتثبيت مثال Python و Virtualenv و Flask Hello World مع قسم حول أمثلة التعليمات البرمجية وتصحيح الأخطاء والاختبار:
تطوير موقع الويب هو أكثر من فن أكثر من مهارة. يتطلب الصبر والاجتهاد ، إلى جانب المثابرة والشجاعة والتفاني لخلق ما هو ضروري لتحقيق نجاح حقيقي. في هذه الأيام ، من الضروري للمتعلمين الوصول إلى السرعة في أسرع وقت ممكن.
لقد أنشأنا هذا البرنامج التعليمي Python Flask للطلاب للحصول على سرعة وتنفيذ برمجة ويب بسيطة ومعقدة باستخدام Python 3 .
هذا البرنامج التعليمي Python Flask يشبه إلى حد كبير برنامج تعليمي للمبتدئين ، والذي سيغطي تثبيت Python و Virtualenv والحزم الأساسية الأخرى. في هذه السلسلة من البرامج التعليمية ، سنقوم أيضًا بتثبيت Flask جنبًا إلى جنب مع ملحقات Flask الضرورية الأخرى. لقد قمنا أيضًا بتضمين قسم حول تصحيح أخطاء الكود والاختبار والتكامل المستمر باستخدام إجراءات Git.
قائمة البرامج التعليمية في سلسلة القارورة هذه
البرنامج التعليمي رقم 1: Python Flask البرنامج التعليمي - مقدمة إلى Flask للمبتدئين
البرنامج التعليمي رقم 2: نموذج القارورة والنموذج والعرض وإعادة التوجيه مع أمثلة
البرنامج التعليمي رقم 3: معالجة قاعدة بيانات Flask - كيفية استخدام Flask مع قاعدة بيانات
البرنامج التعليمي رقم 4: Flask App و Flask Project Layout with Blueprint & amp؛المذكورة في المتطلبات الأساسية.
الخطوة 1: تثبيت Python
تحقق مما إذا كنت قد قمت بتثبيت Python 3 أم لا. إذا لم يكن كذلك ، فقم بتنزيل Python 3 من هنا وقم بتثبيته وفقًا لنظام التشغيل الخاص بك.
الخطوة 2: إنشاء بيئة افتراضية Python
إنشاء بيئة افتراضية باستخدام أدناه الأمر.
python3 -m venv venv
استخدم الأمر أدناه لتنشيط بيئة Python الافتراضية.
source venv/bin/activate
لقد قدمنا مثالاً لتنشيط وتعطيل البيئة الافتراضية أدناه.
يجب تشغيل جميع الأوامر اللاحقة في هذا البرنامج التعليمي في بيئة افتراضية نشطة. قم بتثبيت حزمة العجلة حتى نتمكن من بناء عجلات داخل البيئة الافتراضية.
pip install wheel
الخطوة 3: تنزيل Flask And Insall
نحتاج إلى تنفيذ خطوات تنزيل Flask و قم بتثبيت Flask باستخدام الخطوات المذكورة أدناه.
الآن قم بتثبيت Flask.
pip install flask
يحب البعض منا العمل مع أحدث التغييرات في التعليمات البرمجية المصدر. يمكننا استخدام الأمر الموضح أدناه للتثبيت مع أحدث التغييرات على مصادر Flask.
قم بعمل دليل مؤقت.
mkdir tmp
الآن قم بتثبيت Flask من مستودع Github. يجب أن تظل متصلاً بالإنترنت حتى يعمل الأمر أدناه.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
انظر إلى مخرجات وحدة التحكم للتحقق من التثبيت الناجح. تحقق الآن مما إذا كان بإمكاننا الوصول إلى أوامر Flask.
flask --help
قد ترى بعض الاستثناءات حول عدم وجود Flaskطلب. ومع ذلك ، تجاهل هؤلاء لأننا لم ننشئ أي تطبيق Flask. تطبيقنا هو مثيل لـ Flask ، وهو عبارة عن غلاف في إطار عمل الويب Werkzeug ومحرك قوالب Jinja.
Werkzeug
Werkzeug عبارة عن مجموعة أدوات WSGI. WSGI هو مجرد اصطلاح استدعاء لخوادم الويب لإعادة توجيه طلبات الويب إلى تطبيقات الويب المكتوبة بلغة برمجة Python.
Jinja
المهارات الأساسية لمطوري الويب. Jinja هو محرك قوالب شهير ومتكامل المزايا لبايثون. إنها لغة معبرة تمامًا وتوفر مجموعة قوية من الأدوات لمؤلفي القوالب.
الخطوة 4: تثبيت MongoDB
اتبع الخطوات المذكورة أدناه لتثبيت MongoDB. لقد حددنا خطوات تثبيته في نظام Linux قائم على دبيان. إذا كنت تستخدم نظام تشغيل آخر ، فقم بالوصول إلى الارتباط والتثبيت وفقًا لنظام التشغيل المقصود.
قم بتثبيت gnupg لاستيراد مفتاح GPG العام لـ MongoDB.
sudo apt-get install gnupg
الآن قم باستيراد المفتاح باستخدام الأمر أدناه.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
قم بإنشاء ملف قائمة المصادر وفقًا لتوزيع Linux الخاص بك. لقد أضفنا قائمة المصادر وفقًا لدبيان.
echo "deb //repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
قم بتشغيل أمر التحديث
sudo apt-get update
الآن قم بتثبيت MongoDB باستخدام الأمر أدناه.
sudo apt-get install -y mongodb-org
بمجرد نجاح التثبيت ، ابدأ MongoDB باستخدام الأمر أدناه.
sudo systemctl start mongod
تحقق من حالة MongoDB ، باستخدام الأمرأدناه.
sudo systemctl status mongod
الآن تأكد من أن mongod يبدأ تلقائيًا عند إعادة تشغيل النظام عن طريق إصدار الأمر الموضح أدناه.
sudo systemctl enable mongod
الآن تحقق مما إذا كان بإمكانك اتصل بخادم MongoDB باستخدام عميل mongo.
mongo
في mongo shell ، حاول استخدام أوامر التعليمات وإظهار dbs.
إنشاء تطبيق Flask
استخدم الأمر أدناه لتثبيت flask-appbuilder و mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
أنشئ تطبيقًا هيكليًا بالقيم المعروضة كتعليقات في مقتطف الشفرة أدناه.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
سنرى الإخراج مشابهًا للإخراج أدناه.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
إلقاء نظرة على تخطيط المشروع والتطبيق. لقد أظهرنا إخراج أمر الشجرة أدناه.
دعونا نلقي نظرة على ملف تهيئة Flask. إنه تكوين افتراضي تم إنشاؤه كنتيجة للأمر الأخير. Uncomment Cyborg theme ، كما هو موضح أدناه.
# Theme configuration for Cybord=g # these themes are located on static/appbuilder/css/themes # We can create our own and easily use them by placing them on the same dir structure to override #APP_THEME = "bootstrap-theme.css" # default bootstrap #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # amelia theme #APP_THEME = "cosmo.css" # cosmo theme APP_THEME = "cyborg.css" # cyborg theme #APP_THEME = "flatly.css" # flatly theme
لتشغيل تطبيق skeleton ، استخدم الأمر الوارد أدناه على الجهاز.
flask run
Flask Hello World
لإنشاء برنامجك الأول في flaskTutorialApp ، افتح ملف views.py ضمن دليل التطبيق وأضف الكود التالي. ابحث عن بيانات الاستيراد الواردة في الملف. أضف هذه العبارات إذا لم تكن موجودة بالفعل.
from flask_appbuilder import BaseView, expose from app import appbuilder class HelloWorld(BaseView): """ This first view of the tutorial """ route_base = "/hello" @expose("/") def hello(self): return "Hello, World! from Software Testing Help" # at the end of the file appbuilder.add_view_no_menu(HelloWorld())
احفظ الملف بعد إضافة كود المصدر أعلاه. انتقل إلى الدليل الجذر للمشروع واستخدم الأمر أدناه لتشغيل خادم تطوير Flask.
flask run
انتقل الآن إلى // localhost: 5000 / hello / لرؤية الإخراج فيالمتصفح.
التصحيح
حاليًا ، لا يعمل خادم التطوير في وضع التصحيح. بدون وضع التصحيح ، من الصعب العثور على الأخطاء في الكود المصدري لتطبيق Flask. ينتج عن
وضع التصحيح في Flask ما يلي:
- يعمل وضع التصحيح على تنشيط أداة إعادة التحميل التلقائية. هذا يعني أننا لا نحتاج إلى إعادة تشغيل خادم التطوير بعد إجراء تغييرات في الكود المصدري للتطبيق.
- يعمل وضع التصحيح على تنشيط مصحح أخطاء Python. يمكننا فحص قيم المتغيرات أثناء الاستثناء. يتيح وضع التصحيح
- تصحيح أخطاء تطبيق Flask. يمكننا التحقق من قيم المتغيرات المختلفة في جلسات التصحيح.
قم بإيقاف خادم التطوير إذا كان قيد التشغيل بالفعل. يمكنك استخدام CTRL + C أو مقاطعة لوحة المفاتيح للقيام بالشيء نفسه.
استخدم الكود التالي لتمكين وضع التصحيح وتشغيل خادم التطوير مؤقتًا.
FLASK_ENV=development flask run
بحث وحدة التحكم الخاصة بـ Debugger PIN وقم بتدوين ذلك.
الآن دعنا نغير طريقة عرض HelloWorld المكتوبة أعلاه مع الأسطر التالية من مقتطف الشفرة. لاحظ أننا قدمنا استثناءً مخصصًا.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
انتقل إلى // localhost: 5000 / hello / ، وسترى أن التطبيق أثار استثناءً. يعرض المستعرض تتبع المكدس ، كما هو موضح أدناه.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
علاوة على ذلك ، انظر إلى وحدة التحكم حيث يعمل خادم التطوير. ستجد أن هذه المرة ،يتم اكتشاف التغييرات في ملف view.py تلقائيًا ، ويتم إعادة تشغيل خادم التصحيح من تلقاء نفسه. الآن لا نحتاج إلى إعادة تشغيله يدويًا.
ستحتوي وحدة التحكم على خطوط ، كما هو موضح أدناه. نحتاج إلى تدوين رقم التعريف الشخصي Debug لاحقًا.
* Detected change in '/work/sth/flaskTutorialApp/app/views.py', reloading 2020-06-02 14:59:49,354:INFO:werkzeug: * Detected change in '/work/sth/flaskTutorialApp/app/views.py', reloading * Restarting with stat 2020-06-02 14:59:49,592:INFO:werkzeug: * Restarting with stat * Debugger is active! * Debugger PIN: 150-849-897
الآن تحقق من تتبع المكدس في المتصفح وانتقل إلى السطر الأخير. انقر عليه لتوسيع عرضه وانقر على أيقونة CLI لفتح الغلاف في الوضع التفاعلي.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
بمجرد فتحه ، سترى أن المتصفح سيعرض مطالبة لـ Debug PIN. أعط رقم التعريف الشخصي Debug وانقر على موافق.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
بمجرد المضي قدمًا بعد إعطاء رقم التعريف الشخصي Debug ، يمكننا الوصول إلى shell التفاعلي.
نصل إلى shell من داخل المتصفح و يمكن فحص قيم المتغيرات للعثور على سبب الاستثناء والتعامل مع الخطأ بطريقة أفضل. يرجى إلقاء نظرة على أحد الأمثلة الموضحة في الصورة أدناه.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
الآن قم بتغيير الكود في view.py ، كما هو موضح أدناه. لاحظ أننا علقنا على السطر الذي يحتوي على استثناء مرفوع.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
اختبار تطبيق Flask
الآن ، دعنا نكتب اختبارنا الأول لتطبيق Flask الذي نعمل على تطويره. أولاً ، قم بتثبيت PyTest. PyTest هو إطار اختبار. إنه يساعدنا على كتابة كود أفضل.
علاوة على ذلك ، لمجرد أنه يمكننا كتابة اختبارات الوحدة أثناء تطوير تطبيقاتنا ، فمن الممكن اتباع نهج TDD. TDD تعني التطوير المستند إلى الاختبار. في دروسنا اللاحقة منفي هذه السلسلة ، سنقوم دائمًا بكتابة الاختبارات أولاً وتطوير وجهات نظرنا أو نماذجنا.
تثبيت PyTest
pip install pytest
الآن قم بإنشاء دليل يسمى الاختبارات داخل دليل التطبيق وفي ذلك قم بإنشاء ملف يسمى test_hello.py. لنكتب اختبار الوحدة الأول لدينا لاختبار العرض.
انسخ مقتطف الشفرة التالي والصقه في test_hello.py.
#!/usr/bin/env python from app import appbuilder import pytest @pytest.fixture def client(): """ A pytest fixture for test client """ appbuilder.app.config["TESTING"] = True with appbuilder.app.test_client() as client: yield client def test_hello(client): """ A test method to test view hello """ resp = client.get("/hello", follow_redirects=True) assert 200 == resp.status_code
استخدم الأمر pytest أدناه للتشغيل الإختبارات. يجمع PyTest الاختبارات تلقائيًا ويعرض النتائج على الإخراج القياسي.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
إنشاء سير عمل GitHub
نستخدم إجراءات Git لإنشاء سير عمل CI / CD لتطبيقنا النموذجي. اتبع الخطوات المذكورة أدناه لمشروعك.
الخطوة 1: انتقل إلى صفحة المستودع على GitHub. انقر فوق إجراءات Git.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
الخطوة 2: قم بالتمرير لأسفل على الصفحة وابحث عن قالب سير عمل موجود لحزمة Python.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
الخطوة 3: إعداد سير عمل حزمة Python.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
الخطوة 4: بمجرد فتح تكوين سير عمل python-package.yml ، قم بتحديثه بناءً على yaml الإضافي المحدد قيم العلامات.
name: flaskTutorialApp jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: [3.7, 3.8] mongodb-version: [4.2] steps: - name: Start MongoDB uses: supercharge/[email protected] with: mongodb-version: ${{ matrix.mongodb-version }} # other values
نريد اختبار تطبيق Flask على أحدث توزيعات Ubuntu Linux. بالإضافة إلى نظام التشغيل ، نريد إجراء اختباراتنا فقط باستخدام Python 3.7 و Python 3.8.
الخطوة 5: قم بتثبيت python-package.yml مع القيم المحدثة.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
الخطوة 6: يأخذنا الالتزام في الصفحة السابقة إلى GitActionsالمهام.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
الخطوة 7: [اختياري]
في صفحة Github Jobs لنموذج التطبيق التعليمي ، يمكننا إنشاء شارة ووضعها في ملف README.md لعرض حالة البناء.
الآن ، كلما تم الالتزام بالتغييرات في الفرع الرئيسي ، سيتم اتباع Git Workflow ، كما هو مكتوب في python-package.yml وتشغيله على إجراءات Git .
الاستنتاج
في هذا البرنامج التعليمي ، قمنا بتغطية جميع المفاهيم الأساسية من المتطلبات الأساسية لإعداد سير عمل CI / CD لتطبيق ويب تم تطويره باستخدام Flask - إطار عمل لتطوير الويب يعتمد على Python.
يغطي هذا البرنامج التعليمي جميع الخطوات الضرورية مثل تثبيت Python وتنزيل & amp؛ تثبيت Flask ، والعمل مع Flask-Appbuilder ، والاختبار باستخدام PyTest ، وما إلى ذلك لبدء تطوير الويب باستخدام Python. عادةً ما يقارن مجتمع تطوير الويب Flask بإطار تطوير ويب Python آخر شائع يسمى Django.
سنشرح هذه الاختلافات وسنقارن أيضًا هذه الأطر في أحد البرامج التعليمية في هذه السلسلة.