ټوټوریل #5: د فلاسک ډیزاین نمونې او د ویب غوښتنلیکونو لپاره غوره کړنې
ټوټوریل #6: د مثال سره د فلاسک API ټیوټوریل
دا تعارفي Python فلاسک ټیوټوریل تشریح کوي چې فلاسک څه شی دی، د Python نصب کول، Virtualenv، د فلاسک هیلو ورلډ مثال د کوډ مثالونو، ډیبګ کولو، او ازموینې برخې سره:
د ویب پاڼې پراختیا ده د مهارت څخه ډیر هنر. دا صبر او لیوالتیا ته اړتیا لري، د استقامت، زړورتیا او وقف سره سره د هغه څه رامینځته کولو لپاره چې د ریښتینې بریالیتوب لپاره اړین دي. په دې ورځو کې، د زده کونکو لپاره دا اړینه ده چې ژر تر ژره چټک شي.
موږ دا د Python فلاسک ټیوټوریل د زده کونکو لپاره رامینځته کړی ترڅو سرعت ترلاسه کړي او د Python 3 په کارولو سره ساده او پیچلي ویب پروګرامونه پلي کړي. .
دا د Python فلاسک ټیوټوریل د فلاسک پیل کونکي ټیوټوریل په څیر دی ، کوم چې به پوښي د Python، Virtualenv، او نورو اړین کڅوړو نصب کول. د درسونو په دې لړۍ کې، موږ به د نورو اړین فلاسک پلگ انونو سره فلاسک هم نصب کړو. موږ د Git عملونو په کارولو سره د کوډ ډیبګ کولو ، ازموینې او دوامداره ادغام په اړه برخه هم شامله کړې ده.
پدې فلاسک لړۍ کې د ښوونې لیست
ټیوټوریل # 1: پایتون فلاسک ټیوټوریل – د پیل کونکو لپاره د فلاسک پیژندنه
ټوټوریل نمبر 2: د فلاسک کينډۍ ، فورمه ، لید او د مثالونو سره لارښود
ښوونه #3: د فلاسک ډیټابیس اداره کول – د ډیټابیس سره د فلاسک کارولو څرنګوالی
لارښود # 4: د فلاسک اپلیکیشن او د فلاسک پروژې ترتیب د بلیو چاپ سره &په شرایطو کې ذکر شوي ګامونه.
1 ګام: Python انسټال کړئ
وګورئ چې ایا تاسو Python 3 نصب کړی دی که نه. که نه، نو بیا له دې ځای څخه Python 3 ډاونلوډ کړئ او د خپل عملیاتي سیسټم سره سم یې نصب کړئ.
دوهمه مرحله: د Python مجازی چاپیریال رامینځته کړئ
په کارولو سره یو مجازی چاپیریال رامینځته کړئ. لاندې کمانډ.
python3 -m venv venv
د Python مجازی چاپیریال فعالولو لپاره لاندې کمانډ وکاروئ.
source venv/bin/activate
موږ لاندې د مجازی چاپیریال د فعالولو او غیر فعال کولو مثال ورکړ.
په دې ټیوټوریل کې ټول راتلونکی کمانډونه باید په فعاله مجازی چاپیریال کې پرمخ ولاړ شي. د ویل کڅوړه نصب کړئ ترڅو موږ وکولی شو په مجازی چاپیریال کې ویلونه جوړ کړو.
pip install wheel
درېیم ګام: فلاسک ډاونلوډ او نصب کړئ
موږ اړتیا لرو د فلاسک ډاونلوډ مرحلې ترسره کړو او د لاندې ذکر شویو ګامونو په کارولو سره فلاسک نصب کړئ.
اوس فلاسک نصب کړئ.
pip install flask
زموږ څخه ځینې خوښوي چې د وروستي سرچینې کوډ بدلونونو سره کار وکړي. موږ کولی شو د فلاسک سرچینو ته د وروستي بدلونونو سره د نصبولو لپاره لاندې ورکړل شوي کمانډ وکاروو.
لنډمهاله لارښود جوړ کړئ.
mkdir tmp
اوس د ګیتوب ذخیره څخه فلاسک نصب کړئ. تاسو اړتیا لرئ د لاندې کمانډ کار کولو لپاره له انټرنیټ سره وصل پاتې شئ.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
د کنسول محصولاتو ته وګورئ ترڅو بریالي نصب چیک کړئ. اوس وګورئ چې ایا موږ کولی شو د فلاسک کمانډونو ته لاسرسی ومومئ.
flask --help
تاسو ممکن د فلاسک نشتوالي په اړه ځینې استثناوې وګورئغوښتنلیک په هرصورت ، دوی ته غفلت وکړئ ځکه چې موږ هیڅ فلاسک ایپ ندی رامینځته کړی. زموږ اپلیکیشن د فلاسک یوه بیلګه ده، کوم چې د Werkzeug ویب چوکاټ او د جنجا ټیمپلینګ انجن کې یو ریپر دی.
Werkzeug
Werkzeug د WSGI اوزار کټ دی. WSGI یوازې د ویب سرورونو لپاره د زنګ وهلو کنوانسیون دی چې د Python پروګرامینګ ژبه کې لیکل شوي ویب غوښتنلیکونو ته ویب غوښتنې وړاندې کوي. د ویب پراختیا کونکو لازمي مهارتونه. جینجا د پایتون لپاره په بشپړ ډول ځانګړی او مشهور ټیمپلینګ انجن دی. دا خورا څرګند ژبه ده او د ټیمپلیټ لیکوالانو ته د وسیلو قوي سیټ چمتو کوي.
4 ګام: MongoDB نصب کړئ
د MongoDB نصبولو لپاره لاندې ذکر شوي ګامونه تعقیب کړئ. موږ د دیبیان میشته لینکس کې د دې نصبولو مرحلې په ګوته کړي. که تاسو بل عملیاتي سیسټم کاروئ، نو لینک ته لاسرسی ومومئ او د ټاکل شوي عملیاتي سیسټم سره سم نصب کړئ.
د MongoDB عامه GPG کیلي واردولو لپاره gnupg نصب کړئ.
sudo apt-get install gnupg
اوس د لاندې کمانډ په کارولو سره کیلي وارد کړئ.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
د لینکس توزیع سره سم د سرچینو لیست فایل جوړ کړئ. موږ د ډیبیان په وینا د سرچینو لیست اضافه کړی دی.
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
اوس وګورئ چې تاسو کولی شئ که نه. د مونګو کلائنټ په کارولو سره د MongoDB سرور سره وصل شئ.
mongo
په مونګو شیل کې، د مرستې کارولو هڅه وکړئ او د dbs کمانډونه وښایاست.
یو فلاسک اپلیکیشن جوړ کړئ
د 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!
د پروژې ترتیب او ایپ ته یو نظر وګورئ. موږ لاندې د ونې کمانډ محصول ښودلی دی.
راځئ چې د فلاسک تشکیل فایل ته یو نظر وکړو. دا یو ډیفالټ تشکیل دی چې د وروستي کمانډ په پایله کې رامینځته شوی. غیر تبصره 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/ د محصول لیدو لپارهبراوزر.
Debugging
اوس مهال، پرمختیایي سرور په ډیبګ حالت کې نه چلیږي. د ډیبګ کولو حالت پرته، دا ستونزمنه ده چې د فلاسک غوښتنلیک د سرچینې کوډ کې غلطۍ ومومئ.
په فلاسک کې د ډیبګ حالت په لاندې ډول پایلې لري:
- د ډیبګ حالت اتوماتیک ریلوډر فعالوي. دا پدې مانا ده چې موږ اړتیا نلرو د پرمختیا سرور بیا پیل کړو وروسته له دې چې موږ د غوښتنلیک سرچینې کوډ کې بدلونونه راوړو.
- د ډیبګ حالت د Python ډیبګر فعالوي. موږ کولی شو د استثنا په جریان کې د متغیرونو ارزښتونه معاینه کړو.
- دبګ حالت د فلاسک غوښتنلیک ډیبګ کولو وړتیا ورکوي. موږ کولی شو د ډیبګ کولو غونډو کې د مختلف متغیرونو ارزښتونه وګورو.
پرمختیایی سرور ودروي که چیرې دا دمخه روان وي. تاسو کولی شئ د ورته کولو لپاره CTRL + C یا کیبورډ مداخله وکاروئ.
د ډیبګ حالت فعالولو لپاره لاندې کوډ وکاروئ او په لنډمهاله توګه د پراختیا سرور پرمخ وړئ.
FLASK_ENV=development flask run
لټون د Debugger PIN لپاره کنسول ولیکئ او یو نوټ یې جوړ کړئ.
اوس راځئ چې پورته لیکل شوي هیلو ورلډ لید د کوډ ټوټې لاندې لاینونو سره بدل کړو. په یاد ولرئ چې موږ یو دودیز استثنا معرفي کړې.
@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)
سربیره پردې، کنسول ته وګورئ چیرې چې پراختیایی سرور روان دی. تاسو به ومومئ چې دا ځل، دپه views.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)
یوځل چې تاسو یې خلاص کړئ، تاسو به وګورئ چې براوزر به د ډیبګ PIN لپاره پرامپټ وښیې. د Debug PIN ورکړئ او په OK باندې کلیک وکړئ.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
یوځل چې موږ د ډیبګ PIN ورکولو وروسته مخکې لاړ شو، موږ کولی شو متقابل شیل ته لاسرسی پیدا کړو.
موږ شیل ته د براوزر دننه څخه لاسرسی لرو او کولی شي د متغیرونو ارزښتونه معاینه کړي ترڅو د استثنا لامل ومومي او غلطي په ښه توګه اداره کړي. مهرباني وکړئ په لاندې عکس کې ښودل شوي مثالونو څخه یوه ته وګورئ.
![](/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 کاري فلو رامینځته کولو لپاره د ګیټ عملونه کاروو. د خپلې پروژې لپاره لاندې ذکر شوي مرحلې تعقیب کړئ.
1 ګام: په GitHub کې د ذخیره کولو پا pageې ته لاړشئ. د Git په کړنو کلیک وکړئ.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
دوهمه مرحله: په پاڼه کې ښکته کړئ او د Python کڅوړې لپاره د کاري فلو موجوده ټیمپلیټ ومومئ.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
درېیم ګام: د Python بسته کاري فلو تنظیم کړئ.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
۴ ګام: یوځل چې د 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
موږ غواړو زموږ د فلاسک غوښتنلیک د اوبنټو لینکس وروستي توزیع کې ازموینه وکړو. د OS سربیره، موږ غواړو خپلې ازموینې یوازې د Python 3.7 او Python 3.8 په کارولو سره پرمخ بوځو.
5 ګام: د python-package.yml د تازه ارزښتونو سره ژمن کړئ.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
شپږم ګام: په مخکینۍ پاڼه کې ژمنتیا موږ GitActions ته رسويدندې.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
مرحله 7: [اختیاري]
د نمونې ټیوټوریل ایپ لپاره د ګیتوب دندې په پاڼه کې، موږ کولی شو یو بیج او ځای جوړ کړو دا په README.md فایل کې د جوړیدو حالت ښودلو لپاره.
اوس، کله چې بدلونونه د ماسټر برانچ لپاره ژمن وي، د ګیټ ورک فلو، لکه څنګه چې په python-package.yml کې لیکل شوي، تعقیب به شي او په Git اکشنونو کې به پرمخ ځي. .
پایله
په دې ټیوټوریل کې، موږ د فلاسک – د Python-based ویب پراختیا چوکاټ په کارولو سره رامینځته شوي د ویب اپلیکیشن لپاره د CI/CD کاري فلو تنظیم کولو لپاره د شرایطو څخه ټول اساسی مفکورې پوښلي دي.
دا ټیوټوریل ټول اړین ګامونه پوښي لکه د Python نصب کول، ډاونلوډ کول او د فلاسک نصب کول، د فلاسک اپل جوړونکي سره کار کول، د PyTest سره ازموینه، او نور د Python په کارولو سره د ویب پراختیا سره پیل کولو لپاره. د ویب پرمختیا ټولنه معمولا د فلاسک د بل مشهور Python ویب پرمختیا چوکاټ سره پرتله کوي چې د جینګو په نوم یادیږي.
موږ به دا توپیرونه تشریح کړو او دا چوکاټونه به د دې لړۍ په یوه ښوونیز کې پرتله کړو.