Tutorial #5: Flask Design Patterns සහ Web Applications සඳහා හොඳම භාවිතයන්
Tutorial #6: Flask API Tutorial with example
මෙම හඳුන්වාදීමේ Python Flask නිබන්ධනය Flask යනු කුමක්ද, Python ස්ථාපනය කිරීම, Virtualenv, Flask Hello World උදාහරණය කේත උදාහරණ, නිදොස්කරණය සහ පරීක්ෂා කිරීම පිළිබඳ කොටසකින් පැහැදිලි කරයි:
වෙබ් අඩවි සංවර්ධනය යනු කුසලතාවකට වඩා කලාවකි. එය සැබෑ සාර්ථකත්වයක් සඳහා අවශ්ය දේ නිර්මාණය කිරීමට ඉවසීම සහ කඩිසරකම අවශ්ය වන අතර, නොපසුබට උත්සාහය, ධෛර්යය සහ කැපවීම අවශ්ය වේ. මේ දිනවල, ඉගෙන ගන්නන්ට හැකි ඉක්මනින් වේගය ලබා ගැනීම අත්යවශ්ය වේ.
අපි මෙම Python Flask නිබන්ධනය නිර්මාණය කර ඇත්තේ සිසුන්ට Python 3 භාවිතයෙන් සරල මෙන්ම සංකීර්ණ වෙබ් ක්රමලේඛනය වේගවත් කිරීමට සහ ක්රියාත්මක කිරීමටයි. .
මෙම Python Flask නිබන්ධනය ප්ලාස්ක් ආධුනික නිබන්ධනයක් වැනිය, එය ආවරණය කරනු ඇත. Python, Virtualenv, සහ අනෙකුත් අත්යවශ්ය පැකේජ ස්ථාපනය කිරීම. මෙම නිබන්ධන මාලාවේදී, අපි අවශ්ය අනෙකුත් Flask ප්ලගීන සමඟ Flask ද ස්ථාපනය කරන්නෙමු. අපි Git ක්රියා භාවිතයෙන් කේත නිදොස්කරණය, පරීක්ෂා කිරීම සහ අඛණ්ඩ ඒකාබද්ධ කිරීම පිළිබඳ කොටසකුත් ඇතුළත් කර ඇත.
මෙම Flask Series හි නිබන්ධන ලැයිස්තුව
Tutorial #1: Python Flask නිබන්ධනය – ආධුනිකයින් සඳහා Flask හැඳින්වීම
නිබන්ධනය #2: Flask Template, Form, View, and Redirect with example
Tutorial #3: ෆ්ලැස්ක් දත්ත සමුදාය හැසිරවීම - දත්ත සමුදායක් සමඟ ෆ්ලැස්ක් භාවිතා කරන්නේ කෙසේද
නිබන්ධනය #4: ෆ්ලැස්ක් ඇප් සහ බ්ලූප්රින්ට් සහිත ෆ්ලැස්ක් ව්යාපෘති පිරිසැලසුම &පූර්ව අවශ්යතා වල පියවර සඳහන් කර ඇත.
පියවර 1: Python ස්ථාපනය කරන්න
ඔබ Python 3 ස්ථාපනය කර ඇත්ද නැද්ද යන්න පරීක්ෂා කරන්න. එසේ නොවේ නම්, Python 3 මෙතැනින් බාගත කර ඔබේ මෙහෙයුම් පද්ධතියට අනුව එය ස්ථාපනය කරන්න.
පියවර 2: Python Virtual Environment එකක් සාදන්න
භාවිතා කර අතථ්ය පරිසරයක් සාදන්න පහත විධානය.
python3 -m venv venv
පයිතන් අථත්ය පරිසරය සක්රිය කිරීමට පහත විධානය භාවිතා කරන්න.
source venv/bin/activate
අපි පහතින් අථත්ය පරිසරය සක්රිය කිරීම සහ අක්රිය කිරීම පිළිබඳ උදාහරණයක් ලබා දී ඇත.
මෙම නිබන්ධනයේ ඇති සියලුම පසු විධාන සක්රිය වූ අතථ්ය පරිසරයක ක්රියාත්මක විය යුතුය. අපට අතථ්ය පරිසරය තුළ රෝද තැනීමට හැකි වන පරිදි රෝද පැකේජය ස්ථාපනය කරන්න.
pip install wheel
පියවර 3: ෆ්ලැස්ක් බාගත කර ස්ථාපනය කරන්න
අපි ප්ලාස්ක් බාගත කිරීමේ පියවරයන් ඉටු කළ යුතු අතර පහත සඳහන් පියවර භාවිතයෙන් Flask ස්ථාපනය කරන්න.
දැන් Flask ස්ථාපනය කරන්න.
pip install flask
අපගෙන් සමහරක් නවතම මූලාශ්ර කේත වෙනස් කිරීම් සමඟ වැඩ කිරීමට කැමතියි. Flask හි මූලාශ්රවල නවතම වෙනස්කම් සමඟ ස්ථාපනය කිරීමට අපට පහත විධානය භාවිතා කළ හැක.
තාවකාලික නාමාවලියක් සාදන්න.
mkdir tmp
දැන් Github ගබඩාවෙන් Flask ස්ථාපනය කරන්න. පහත විධානය ක්රියා කිරීම සඳහා ඔබ අන්තර්ජාලයට සම්බන්ධව සිටිය යුතුය.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
සාර්ථක ස්ථාපනය පරීක්ෂා කිරීමට කොන්සෝල ප්රතිදානයන් බලන්න. දැන් අපට Flask විධාන වෙත ප්රවේශ විය හැකිදැයි පරීක්ෂා කරන්න.
flask --help
ඔබට Flask එකක් නොමැති වීම ගැන යම් යම් ව්යතිරේක දැකිය හැක.අයදුම්පත. කෙසේ වෙතත්, අපි කිසිදු Flask යෙදුමක් නිර්මාණය කර නොමැති බැවින් ඒවා නොසලකා හරින්න. අපගේ යෙදුම යනු Werkzeug වෙබ් රාමුව සහ Jinja සැකිලි එන්ජිමෙහි දවටනයක් වන Flask හි උදාහරණයකි.
Werkzeug
Werkzeug යනු WSGI මෙවලම් කට්ටලයකි. WSGI යනු පයිතන් ක්රමලේඛන භාෂාවෙන් ලියා ඇති වෙබ් යෙදුම් වෙත වෙබ් ඉල්ලීම් යොමු කිරීම සඳහා වෙබ් සේවාදායකයන් සඳහා ඇමතුම් සම්මුතියක් පමණි.
ජින්ජා
සැකසීම යනු වෙබ් සංවර්ධකයින්ගේ අත්යවශ්ය කුසලතා. Jinja යනු 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 -
ඔබගේ ලිනක්ස් බෙදාහැරීම අනුව මූලාශ්ර ලැයිස්තු ගොනුව සාදන්න. අපි 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
Run update command
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 සේවාලාභියා භාවිතයෙන් MongoDB සේවාදායකයට සම්බන්ධ වන්න.
mongo
mongo shell තුළ, උපකාරය භාවිතා කර dbs විධාන පෙන්වන්න.
Flask App එකක් සාදන්න
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 config ගොනුව දෙස බලමු. එය අවසාන විධානයේ ප්රතිඵලයක් ලෙස ජනනය කරන ලද පෙරනිමි වින්යාසයකි. පහත දක්වා ඇති පරිදි Cyborg තේමාව අදහස් දක්වන්න
ඔබේ පළමු වැඩසටහන 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 හි දෝශ නිරාකරණ ප්රකාරය පහත දැක්වේ:
- දෝශ නිරාකරණ මාදිලිය ස්වයංක්රීය රීලෝඩරය සක්රීය කරයි. එයින් අදහස් වන්නේ අපි යෙදුමේ ප්රභව කේතයේ වෙනස්කම් සිදු කිරීමෙන් පසු සංවර්ධන සේවාදායකය නැවත ආරම්භ කිරීම අවශ්ය නොවන බවයි.
- නිදොස් කිරීමේ ප්රකාරය පයිතන් නිදොස්කරණය සක්රීය කරයි. ව්යතිරේකයේදී අපට විචල්යවල අගයන් පරීක්ෂා කළ හැක.
- දෝෂ ප්රකාරය Flask යෙදුම් නිදොස්කරණය සක්රීය කරයි. නිදොස් කිරීමේ සැසිවලදී අපට විවිධ විචල්යවල අගයන් පරීක්ෂා කළ හැකිය.
සංවර්ධන සේවාදායකය දැනටමත් ක්රියාත්මක වන්නේ නම් එය නවත්වන්න. ඔබට එයම කිරීමට CTRL + C හෝ Keyboard interrupt භාවිත කළ හැක.
නිදොස්කරණය ප්රකාරය සක්රීය කිරීමට සහ සංවර්ධන සේවාදායකය තාවකාලිකව ක්රියාත්මක කිරීමට පහත කේතය භාවිතා කරන්න.
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)
තව දුරටත්, සංවර්ධන සේවාදායකය ක්රියාත්මක වන කොන්සෝලය දෙස බලන්න. මෙවර එය ඔබට පෙනෙනු ඇතviews.py හි වෙනස්කම් ස්වයංක්රීයව අනාවරණය වන අතර, දෝශ නිරාකරණ සේවාදායකය නැවත ආරම්භ වේ. දැන් අපට එය අතින් නැවත ආරම්භ කිරීමට අවශ්ය නැත.
පහත පෙන්වා ඇති පරිදි කොන්සෝලයට රේඛා ඇත. අපි පසුව සඳහා නිදොස් කිරීමේ PIN එක සටහන් කර ගත යුතුයි.
* 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 සඳහා ප්රේරකයක් පෙන්වන බව ඔබට පෙනෙනු ඇත. නිදොස් කිරීමේ 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"
Flask යෙදුම පරීක්ෂා කිරීම
දැන් අපි සංවර්ධනය කරන Flask යෙදුම සඳහා අපගේ පළමු පරීක්ෂණය ලියමු. පළමුව, PyTest ස්ථාපනය කරන්න. PyTest යනු පරීක්ෂණ රාමුවකි. එය වඩා හොඳ කේතයක් ලිවීමට අපට උපකාර කරයි.
එපමනක් නොව, අපගේ යෙදුම් සංවර්ධනය කිරීමේදී ඒකක පරීක්ෂණ ලිවිය හැකි බැවින්, එය TDD ප්රවේශය අනුගමනය කළ හැකිය. TDD යනු Test-Driven Development යන්නයි. අපගේ පසුකාලීන නිබන්ධන වලමෙම ශ්රේණිය, අපි සෑම විටම පළමුව පරීක්ෂණ ලියා අපගේ දසුන් හෝ ආකෘති සංවර්ධනය කරමු.
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 හි ගබඩා පිටුවට යන්න. Git Actions මත ක්ලික් කරන්න.
![](/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 බෙදාහැරීම මත අපගේ Flask යෙදුම පරීක්ෂා කිරීමට අවශ්යයි. මෙහෙයුම් පද්ධතියට අමතරව, අපට අපගේ පරීක්ෂණ ධාවනය කිරීමට අවශ්ය වන්නේ Python 3.7 සහ Python 3.8 භාවිතයෙන් පමණි.
පියවර 5: යාවත්කාලීන කළ අගයන් සමඟ python-package.yml කැප කරන්න.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
පියවර 6: පෙර පිටුවේ කැපවීම අපව GitAction වෙත ගෙන යයිjobs.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
පියවර 7: [විකල්ප]
නියැදි නිබන්ධන යෙදුම සඳහා Github රැකියා පිටුවේ, අපට ලාංඡනයක් සහ ස්ථානයක් සෑදිය හැක එය ගොඩනැගීමේ තත්ත්වය ප්රදර්ශනය කිරීම සඳහා README.md ගොනුව මත වේ.
දැන්, ප්රධාන ශාඛාව වෙත වෙනස්කම් සිදු කරන විට, python-package.yml හි ලියා ඇති Git Workflow අනුගමනය කර Git ක්රියා මත ධාවනය වේ. .
නිගමනය
මෙම නිබන්ධනයේදී, අපි Flask – A Python-පාදක වෙබ් සංවර්ධන රාමුවක් භාවිතයෙන් සංවර්ධනය කරන ලද වෙබ් යෙදුමක් සඳහා පූර්ව අවශ්යතා සිට CI/CD කාර්ය ප්රවාහය සැකසීම දක්වා සියලු මූලික සංකල්ප ආවරණය කර ඇත.
මෙම නිබන්ධනය Python ස්ථාපනය කිරීම, බාගත කිරීම සහ amp; Python භාවිතයෙන් වෙබ් සංවර්ධනය ආරම්භ කිරීම සඳහා Flask ස්ථාපනය කිරීම, Flask-Appbuilder සමඟ වැඩ කිරීම, PyTest සමඟ පරීක්ෂා කිරීම යනාදිය. වෙබ් සංවර්ධන ප්රජාව සාමාන්යයෙන් Flask එක Django නම් තවත් ජනප්රිය Python වෙබ් සංවර්ධන රාමුවක් සමඟ සංසන්දනය කරයි.
අපි මෙම වෙනස්කම් පැහැදිලි කරන අතර මෙම ලිපි මාලාවේ එක් නිබන්ධනයකින් මෙම රාමු සංසන්දනය කරන්නෙමු.