ٹیوٹوریل #5: فلاسک ڈیزائن پیٹرنز اور ویب ایپلیکیشنز کے لیے بہترین طریقہ کار
ٹیوٹوریل #6: مثال کے ساتھ فلاسک API ٹیوٹوریل
یہ تعارفی Python فلاسک ٹیوٹوریل بتاتا ہے کہ فلاسک کیا ہے، Python کی انسٹالیشن، Virtualenv، Flask Hello World مثال کوڈ کی مثالوں، ڈیبگنگ اور ٹیسٹنگ کے سیکشن کے ساتھ:
ویب سائٹ کی ترقی ہے ہنر سے زیادہ فن۔ اسے حقیقی کامیابی کے لیے جو ضروری ہے اسے تخلیق کرنے کے لیے ثابت قدمی، ہمت اور لگن کے ساتھ ساتھ صبر اور تندہی کی ضرورت ہوتی ہے۔ ان دنوں، سیکھنے والوں کے لیے جلد از جلد رفتار حاصل کرنا ضروری ہے۔
ہم نے یہ Python Flask ٹیوٹوریل طالب علموں کے لیے بنایا ہے تاکہ وہ رفتار حاصل کر سکیں اور Python 3 کا استعمال کرتے ہوئے سادہ اور پیچیدہ ویب پروگرامنگ کو لاگو کریں۔ .
یہ Python Flask ٹیوٹوریل ایک فلاسک بیگنر ٹیوٹوریل کی طرح ہے، جس میں Python، Virtualenv، اور دیگر ضروری پیکجوں کی تنصیب۔ سبق کی اس سیریز میں، ہم دیگر ضروری فلاسک پلگ ان کے ساتھ فلاسک کو بھی انسٹال کریں گے۔ ہم نے گٹ ایکشنز کا استعمال کرتے ہوئے کوڈ ڈیبگنگ، ٹیسٹنگ اور مسلسل انضمام پر ایک سیکشن بھی شامل کیا ہے۔
اس فلاسک سیریز میں ٹیوٹوریلز کی فہرست
ٹیوٹوریل #1: ازگر فلاسک ٹیوٹوریل – ابتدائیوں کے لیے فلاسک کا تعارف
ٹیوٹوریل #2: فلاسک ٹیمپلیٹ، فارم، دیکھیں، اور مثالوں کے ساتھ ری ڈائریکٹ
ٹیوٹوریل #3: فلاسک ڈیٹا بیس ہینڈلنگ – ڈیٹا بیس کے ساتھ فلاسک کا استعمال کیسے کریں
ٹیوٹوریل #4: فلاسک ایپ اور فلاسک پروجیکٹ لے آؤٹ بلیو پرنٹ کے ساتھ &شرائط میں اقدامات کا ذکر کیا ہے۔
مرحلہ 1: Python انسٹال کریں
چیک کریں کہ آپ نے Python 3 انسٹال کیا ہے یا نہیں۔ اگر نہیں۔ نیچے کی کمانڈ۔
python3 -m venv venv
پائیتھون ورچوئل ماحول کو چالو کرنے کے لیے نیچے دی گئی کمانڈ کا استعمال کریں۔
source venv/bin/activate
ہم نے ذیل میں ورچوئل ماحول کو چالو کرنے اور غیر فعال کرنے کی ایک مثال دی ہے۔
اس ٹیوٹوریل میں آنے والی تمام کمانڈز کو ایک فعال ورچوئل ماحول میں چلنا چاہیے۔ وہیل پیکج انسٹال کریں تاکہ ہم ورچوئل ماحول کے اندر پہیے بنا سکیں۔
pip install wheel
مرحلہ 3: فلاسک ڈاؤن لوڈ اور انسٹال کریں
ہمیں فلاسک ڈاؤن لوڈ کے مراحل کو انجام دینے کی ضرورت ہے اور ذیل میں بتائے گئے مراحل کا استعمال کرتے ہوئے فلاسک انسٹال کریں۔
اب فلاسک انسٹال کریں۔
pip install flask
ہم میں سے کچھ لوگ ماخذ کوڈ کی تازہ ترین تبدیلیوں کے ساتھ کام کرنا پسند کرتے ہیں۔ ہم فلاسک کے ذرائع میں تازہ ترین تبدیلیوں کے ساتھ انسٹال کرنے کے لیے نیچے دی گئی کمانڈ کا استعمال کر سکتے ہیں۔
ایک عارضی ڈائرکٹری بنائیں۔
mkdir tmp
اب Github ریپوزٹری سے Flask انسٹال کریں۔ نیچے دی گئی کمانڈ کے کام کرنے کے لیے آپ کو انٹرنیٹ سے جڑے رہنے کی ضرورت ہے۔
pip3 install -e [email protected]:pallets/flask.git#egg=flask
کامیاب انسٹالیشن چیک کرنے کے لیے کنسول آؤٹ پٹس کو دیکھیں۔ اب چیک کریں کہ آیا ہم فلاسک کمانڈز تک رسائی حاصل کر سکتے ہیں۔
flask --help
آپ فلاسک کی عدم موجودگی کے بارے میں کچھ استثناء دیکھ سکتے ہیں۔درخواست تاہم، ان کو نظر انداز کریں کیونکہ ہم نے کوئی فلاسک ایپ نہیں بنائی ہے۔ ہماری ایپ Flask کی ایک مثال ہے، جو Werkzeug ویب فریم ورک اور Jinja templating engine پر ایک ریپر ہے۔
Werkzeug
Werkzeug ایک WSGI ٹول کٹ ہے۔ WSGI صرف ایک کالنگ کنونشن ہے جو ویب سرورز کے لیے ویب درخواستوں کو Python پروگرامنگ زبان میں لکھی گئی ویب ایپلیکیشنز کو بھیجنے کے لیے ہے۔
جنجا
ٹیمپلیٹنگ ایک ہے۔ ویب ڈویلپرز کی ضروری مہارت کا سیٹ۔ جنجا ازگر کے لیے مکمل طور پر نمایاں اور مقبول ٹیمپلیٹنگ انجن ہے۔ یہ کافی معنی خیز زبان ہے اور ٹیمپلیٹ مصنفین کو ٹولز کا ایک مضبوط سیٹ فراہم کرتی ہے۔
مرحلہ 4: MongoDB انسٹال کریں
منگو ڈی بی کو انسٹال کرنے کے لیے نیچے دیے گئے اقدامات پر عمل کریں۔ ہم نے اسے ڈیبین پر مبنی لینکس میں انسٹال کرنے کے اقدامات کا خاکہ پیش کیا ہے۔ اگر آپ کوئی دوسرا آپریٹنگ سسٹم استعمال کر رہے ہیں، تو لنک تک رسائی حاصل کریں اور مطلوبہ آپریٹنگ سسٹم کے مطابق انسٹال کریں۔
MongoDB پبلک GPG کلید درآمد کرنے کے لیے gnupg انسٹال کریں۔
sudo apt-get install gnupg
اب نیچے دی گئی کمانڈ کا استعمال کرتے ہوئے کلید کو درآمد کریں۔
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
اپنے لینکس کی تقسیم کے مطابق ذرائع کی فہرست کی فائل بنائیں۔ ہم نے Debian کے مطابق ذرائع کی فہرست شامل کی ہے۔
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
اب یقینی بنائیں کہ منگوڈ نیچے دکھائی گئی کمانڈ جاری کرکے سسٹم ریبوٹ پر خود بخود شروع ہوجائے۔
sudo systemctl enable mongod
اب چیک کریں کہ کیا آپ کر سکتے ہیں منگو کلائنٹ کا استعمال کرتے ہوئے مونگو ڈی بی سرور سے جڑیں۔
mongo
منگو شیل میں، مدد استعمال کرنے کی کوشش کریں اور ڈی بی ایس کمانڈز دکھائیں۔
فلاسک ایپ بنائیں
فلاسک-ایپ بلڈر اور مونگو انجین کو انسٹال کرنے کے لیے نیچے دی گئی کمانڈ کا استعمال کریں۔
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!
پروجیکٹ اور ایپ کے لے آؤٹ پر ایک نظر ڈالیں۔ ہم نے نیچے ٹری کمانڈ کا آؤٹ پٹ دکھایا ہے۔
آئیے فلاسک کنفگ فائل پر ایک نظر ڈالتے ہیں۔ یہ ایک ڈیفالٹ ترتیب ہے جو آخری کمانڈ کے نتیجے میں تیار کی گئی ہے۔ Cyborg تھیم کو غیر تبصرہ کریں، جیسا کہ ذیل میں دکھایا گیا ہے۔
# 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
کنکال ایپ کو چلانے کے لیے، ٹرمینل پر نیچے دی گئی کمانڈ کا استعمال کریں۔
flask run
فلاسک ہیلو ورلڈ
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 run
اب اس میں آؤٹ پٹ دیکھنے کے لیے //localhost:5000/hello/ پر جائیں۔براؤزر۔
ڈیبگنگ
فی الحال، ڈیبگ موڈ میں ڈیولپمنٹ سرور نہیں چل رہا ہے۔ ڈیبگنگ موڈ کے بغیر، فلاسک ایپلیکیشن کے سورس کوڈ میں خرابیوں کو تلاش کرنا مشکل ہے۔
فلاسک میں ڈیبگ موڈ کے نتائج درج ذیل ہیں:
- ڈیبگ موڈ خودکار ری لوڈر کو چالو کرتا ہے۔ اس کا مطلب ہے کہ ایپلیکیشن کے سورس کوڈ میں تبدیلیاں کرنے کے بعد ہمیں ڈویلپمنٹ سرور کو دوبارہ شروع کرنے کی ضرورت نہیں ہے۔
- ڈیبگ موڈ ازگر ڈیبگر کو فعال کرتا ہے۔ ہم استثناء کے دوران متغیر کی قدروں کا معائنہ کر سکتے ہیں۔
- ڈیبگ موڈ فلاسک ایپلیکیشن ڈیبگنگ کو قابل بناتا ہے۔ ہم ڈیبگنگ سیشنز میں مختلف متغیرات کی قدروں کو چیک کر سکتے ہیں۔
اگر ڈیولپمنٹ سرور پہلے سے چل رہا ہے تو اسے روک دیں۔ آپ ایسا کرنے کے لیے CTRL + C یا Keyboard interrupt استعمال کر سکتے ہیں۔
ڈیبگ موڈ کو فعال کرنے کے لیے درج ذیل کوڈ کا استعمال کریں اور ڈیولپمنٹ سرور کو عارضی طور پر چلائیں۔
FLASK_ENV=development flask run
تلاش کریں ڈیبگر پن کے لیے کنسول اور اس کا ایک نوٹ بنائیں۔
اب آئیے کوڈ کے ٹکڑوں کی درج ذیل لائنوں کے ساتھ اوپر لکھا ہوا ہیلو ورلڈ ویو تبدیل کریں۔ نوٹ کریں کہ ہم نے ایک حسب ضرورت استثناء متعارف کرایا ہے۔
@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)
اس کے علاوہ، کنسول کو دیکھیں جہاں ڈیولپمنٹ سرور چل رہا ہے۔ آپ دیکھیں گے کہ اس بار، theviews.py میں تبدیلیوں کا خود بخود پتہ چل جاتا ہے، اور ڈیبگ سرور خود بخود دوبارہ شروع ہو جاتا ہے۔ اب ہمیں اسے دستی طور پر دوبارہ شروع کرنے کی ضرورت نہیں ہے۔
کنسول میں لائنیں ہوں گی، جیسا کہ نیچے دکھایا گیا ہے۔ ہمیں بعد میں ڈیبگ پن کو نوٹ کرنے کی ضرورت ہے۔
* 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)
ایک بار جب آپ اسے کھولیں گے، آپ دیکھیں گے کہ براؤزر ڈیبگ پن کے لیے ایک پرامپٹ دکھائے گا۔ ڈیبگ پن دیں اور ٹھیک پر کلک کریں۔
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
ایک بار جب ہم ڈیبگ پن دینے کے بعد آگے بڑھیں تو ہم انٹرایکٹو شیل تک رسائی حاصل کرسکتے ہیں۔
ہم براؤزر کے اندر سے شیل تک رسائی حاصل کرتے ہیں اور Exception کی وجہ تلاش کرنے کے لیے متغیر کی اقدار کا معائنہ کر سکتا ہے اور غلطی کو بہتر طریقے سے ہینڈل کر سکتا ہے۔ براہ کرم ذیل کی تصویر میں دکھائی گئی مثالوں میں سے ایک کو دیکھیں۔
![](/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"
فلاسک ایپلیکیشن کی جانچ کرنا
اب فلاسک ایپلی کیشن کے لیے اپنا پہلا ٹیسٹ لکھتے ہیں جسے ہم تیار کر رہے ہیں۔ سب سے پہلے، 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 ورک فلو بنائیں
ہم اپنی نمونہ ایپلیکیشن کے لیے CI/CD ورک فلو بنانے کے لیے Git ایکشنز کا استعمال کرتے ہیں۔ اپنے پروجیکٹ کے لیے نیچے دیے گئے مراحل پر عمل کریں۔
مرحلہ 1: GitHub پر ریپوزٹری پیج پر جائیں۔ گٹ ایکشنز پر کلک کریں۔
![](/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
ہم اپنی فلاسک ایپلیکیشن کی تازہ ترین Ubuntu Linux ڈسٹری بیوشن پر جانچ کرنا چاہتے ہیں۔ OS کے علاوہ، ہم اپنے ٹیسٹ صرف 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 فائل پر بلڈ اسٹیٹس ظاہر کرنے کے لیے۔
اب، جب بھی ماسٹر برانچ میں تبدیلیاں کی جائیں گی، گٹ ورک فلو، جیسا کہ python-package.yml میں لکھا گیا ہے، اس کی پیروی کی جائے گی اور گٹ ایکشنز پر چلائی جائے گی۔ .
نتیجہ
اس ٹیوٹوریل میں، ہم نے فلاسک - ایک ازگر پر مبنی ویب ڈویلپمنٹ فریم ورک کے استعمال سے تیار کردہ ویب ایپلیکیشن کے لیے CI/CD ورک فلو کو ترتیب دینے کے لیے پیشگی شرائط سے لے کر تمام بنیادی تصورات کا احاطہ کیا ہے۔
اس ٹیوٹوریل میں تمام ضروری مراحل کا احاطہ کیا گیا ہے جیسے ازگر کو انسٹال کرنا، ڈاؤن لوڈ کرنا اور فلاسک انسٹال کرنا، فلاسک-ایپ بلڈر کے ساتھ کام کرنا، PyTest کے ساتھ ٹیسٹ کرنا، وغیرہ۔ ویب ڈویلپمنٹ کمیونٹی عام طور پر فلاسک کا موازنہ Django نامی ایک اور مشہور Python ویب ڈویلپمنٹ فریم ورک سے کرتی ہے۔
ہم ان فرقوں کی وضاحت کریں گے اور ان فریم ورک کا موازنہ اس سیریز کے ایک ٹیوٹوریل میں بھی کریں گے۔