Tiwtorial #5: Patrymau Dylunio Fflasg Ac Arferion Gorau Ar Gyfer Cymwysiadau Gwe
Tiwtorial #6: Tiwtorial Fflasg API Gydag Enghraifft
Mae'r tiwtorial Python Flask rhagarweiniol hwn yn esbonio beth yw Fflasg, gosod enghraifft Python, Virtualenv, Flask Hello World gydag adran ar enghreifftiau cod, dadfygio a phrofi:
Mae datblygu gwefan yn mwy o gelfyddyd na sgil. Mae’n gofyn am amynedd a diwydrwydd, ynghyd â dyfalbarhad, dewrder, ac ymroddiad i greu’r hyn sy’n angenrheidiol er mwyn iddo fod yn llwyddiant gwirioneddol. Y dyddiau hyn, mae'n hanfodol i ddysgwyr gyrraedd cyflymdra cyn gynted â phosibl.
Rydym wedi creu'r tiwtorial Python Flask hwn er mwyn i'r myfyrwyr gael y wybodaeth ddiweddaraf a gweithredu rhaglennu gwe syml yn ogystal â chymhleth gan ddefnyddio Python 3 .
>
![](/wp-content/uploads/guides/iae5sr2a76.png)
Mae'r tiwtorial Python Fflasg hwn yn debycach i diwtorial fflasg i ddechreuwyr, a fydd yn ymdrin â'r gosod Python, Virtualenv, a phecynnau hanfodol eraill. Yn y gyfres hon o sesiynau tiwtorial, byddwn hefyd yn gosod Flask ynghyd â'r ategion Fflasg angenrheidiol eraill. Rydym hefyd wedi cynnwys adran ar ddadfygio cod, profi, ac integreiddio parhaus gan ddefnyddio Git Actions.
Rhestr O Diwtorialau Yn y Gyfres Fflasg Hon
Tiwtorial #1: Python Flask Tiwtorial – Cyflwyniad i Fflasg i Ddechreuwyr
Tiwtorial #2: Templed Fflasg, Ffurflen, Gweld, Ac Ailgyfeirio Gydag Enghreifftiau
Tiwtorial #3: Trin Cronfa Ddata Fflasg – Sut I Ddefnyddio Fflasg Gyda Chronfa Ddata
Tiwtorial #4: Ap Fflasg A Chynllun Prosiect Fflasg Gyda Glasbrint &camau a grybwyllir yn y rhagofynion.
Cam 1: Gosod Python
Gwiriwch a ydych wedi gosod Python 3 ai peidio. Os na, yna lawrlwythwch Python 3 o yma a'i osod yn unol â'ch System Weithredu.
Cam 2: Creu Amgylchedd Rhith Python
Creu amgylchedd rhithwir gan ddefnyddio'r gorchymyn isod.
python3 -m venv venv
Defnyddiwch y gorchymyn isod i actifadu rhith-amgylchedd Python.
source venv/bin/activate
Rydym wedi rhoi enghraifft o actifadu a dadactifadu'r amgylchedd rhithwir isod.
Dylai'r holl orchmynion dilynol yn y tiwtorial hwn redeg mewn amgylchedd rhithwir actifedig. Gosodwch y pecyn olwynion fel y gallwn adeiladu olwynion y tu mewn i'r amgylchedd rhithwir.
pip install wheel
Cam 3: Lawrlwytho Fflasg a'i Gosod
Mae angen i ni gyflawni'r camau lawrlwytho Fflasg a gosod Fflasg gan ddefnyddio'r camau isod.
Nawr gosod Fflasg.
pip install flask
Mae rhai ohonom yn hoffi gweithio gyda'r newidiadau cod ffynhonnell diweddaraf. Gallwn ddefnyddio'r gorchymyn isod i osod gyda'r newidiadau diweddaraf i ffynonellau Fflasg.
Gwnewch gyfeiriadur dros dro.
mkdir tmp
Nawr gosodwch Flask o ystorfa Github. Mae angen i chi aros yn gysylltiedig â'r rhyngrwyd er mwyn i'r gorchymyn isod weithio.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Edrychwch ar allbynnau'r consol i wirio'r gosodiad llwyddiannus. Nawr gwiriwch a allwn gyrchu gorchmynion Fflasg.
flask --help
Efallai y gwelwch rai eithriadau am absenoldeb Fflasgcais. Fodd bynnag, esgeuluswch y rheini gan nad ydym wedi creu unrhyw app Fflasg. Mae ein ap yn enghraifft o Flask, sy'n lapiwr ar fframwaith gwe Werkzeug ac injan dempled Jinja.
Werkzeug
Becyn cymorth WSGI yw Werkzeug. Confensiwn galw yn unig yw WSGI i weinyddion gwe anfon ceisiadau gwe ymlaen i gymwysiadau gwe a ysgrifennwyd yn iaith raglennu Python. set sgiliau hanfodol datblygwyr gwe. Mae Jinja yn injan dempled llawn sylw a phoblogaidd ar gyfer Python. Mae'n iaith eithaf mynegiannol ac yn darparu set gadarn o offer i awduron templed.
Cam 4: Gosod MongoDB
Dilynwch y camau isod i osod MongoDB. Rydym wedi amlinellu'r camau i'w gosod mewn Linux seiliedig ar Debian. Os ydych yn defnyddio system weithredu arall, yna ewch i'r ddolen a gosodwch yn unol â'r system weithredu arfaethedig.
Gosod gnupg ar gyfer mewnforio allwedd GPG cyhoeddus MongoDB.
sudo apt-get install gnupg
1> Nawr mewnforiwch yr allwedd gan ddefnyddio'r gorchymyn isod.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Crëwch y ffeil rhestr ffynonellau yn unol â'ch dosbarthiad Linux. Rydym wedi ychwanegu'r rhestr o ffynonellau yn unol â 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
Rhedeg gorchymyn diweddaru
sudo apt-get update
Nawr gosodwch MongoDB, gan ddefnyddio'r gorchymyn isod.
sudo apt-get install -y mongodb-org
Unwaith y bydd y gosodiad yn llwyddiannus, dechreuwch MongoDB gan ddefnyddio'r gorchymyn isod.
sudo systemctl start mongod
Gwiriwch statws MongoDB, gan ddefnyddio'r gorchymynisod.
sudo systemctl status mongod
Nawr sicrhewch fod mongod yn cychwyn yn awtomatig wrth ailgychwyn y system drwy roi'r gorchymyn a ddangosir isod.
sudo systemctl enable mongod
Nawr gwiriwch a allwch cysylltu â'r gweinydd MongoDB gan ddefnyddio cleient mongo.
mongo
Yn y plisgyn mongo, ceisiwch ddefnyddio'r help a dangos gorchmynion dbs.
Creu Ap Fflasg
Defnyddiwch y gorchymyn isod i osod fflasg-appbuilder a mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Creu ap sgerbwd gyda'r gwerthoedd a ddangosir fel sylwadau yn y pyt cod isod.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
Byddwn yn gweld yr allbwn yn debyg i'r un a roddir isod.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
Edrychwch ar gynllun y prosiect a'r ap. Rydym wedi dangos allbwn y gorchymyn coeden isod.
Gadewch i ni edrych ar y ffeil ffurfweddu Fflasg. Mae'n gyfluniad rhagosodedig a gynhyrchir o ganlyniad i'r gorchymyn diwethaf. Uncomment Thema Cyborg , fel y dangosir isod.
# 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
I redeg yr ap sgerbwd, defnyddiwch y gorchymyn isod ar y derfynell.
flask run
Fflasg Helo World
I greu eich rhaglen gyntaf yn y fflasg TutorialApp, agorwch ffeil views.py o dan y cyfeiriadur app ac ychwanegwch y cod canlynol. Chwiliwch am ddatganiadau mewnforio a roddir yn y ffeil. Ychwanegwch y datganiadau hyn os nad ydynt eisoes yn bresennol.
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())
Cadw'r ffeil ar ôl ychwanegu'r cod ffynhonnell uchod. Ewch i gyfeiriadur gwraidd y prosiect a defnyddiwch y gorchymyn isod i redeg gweinydd datblygu'r Fflasg.
flask run
Nawr llywiwch i // localhost: 5000/hello/ i weld yr allbwn yny porwr.
Dadfygio
Ar hyn o bryd, nid yw'r gweinydd datblygu yn rhedeg yn y modd Dadfygio. Heb y modd dadfygio, mae'n anodd dod o hyd i'r gwallau yng nghod ffynhonnell y Cymhwysiad Fflasg.
Mae Modd Dadfygio yn Fflasg yn arwain at y canlynol:
- Mae modd dadfygio yn actifadu ail-lwythwr Awtomatig. Mae'n golygu nad oes angen i ni ailgychwyn y gweinydd datblygu ar ôl i ni wneud newidiadau yng nghod ffynhonnell y rhaglen.
- Mae modd dadfygio yn actifadu'r dadfygiwr Python. Gallwn archwilio gwerthoedd newidynnau yn ystod yr Eithriad.
- Mae modd dadfygio yn galluogi dadfygio cymhwysiad Fflasg. Gallwn wirio gwerthoedd amrywiol newidynnau mewn sesiynau dadfygio.
Stopiwch y gweinydd datblygu os yw'n rhedeg yn barod. Gallwch ddefnyddio CTRL + C neu ymyriad bysellfwrdd i wneud yr un peth.
Defnyddiwch y cod canlynol i alluogi'r modd dadfygio a rhedeg y gweinydd datblygu dros dro.
FLASK_ENV=development flask run
Chwilio y consol ar gyfer PIN Debugger a gwnewch nodyn ohono.
Nawr, gadewch i ni newid y wedd HelloWorld ysgrifenedig uchod gyda'r llinellau canlynol o'r pyt cod. Sylwch ein bod wedi cyflwyno eithriad personol.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Llywiwch i //localhost:5000/hello/, a byddwch yn gweld bod y cais wedi codi eithriad. Mae'r porwr yn dangos olrhain y pentwr, fel y dangosir isod.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Ymhellach, edrychwch ar y consol lle mae'r gweinydd datblygu yn rhedeg. Fe gewch fod y tro hwn, ymae newidiadau yn y views.py yn cael eu canfod yn awtomatig, ac mae'r gweinydd dadfygio yn ailgychwyn ar ei ben ei hun. Nawr nid oes angen i ni ei ailgychwyn â llaw.
Bydd gan y consol linellau, fel y dangosir isod. Mae angen i ni nodi'r PIN Dadfygio yn ddiweddarach.
* 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
Nawr gwiriwch olrhain y pentwr yn y porwr ac ewch i'r llinell olaf. Cliciwch arno i ehangu ei olwg a chliciwch ar yr eicon CLI i agor y plisgyn yn y modd rhyngweithiol.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Ar ôl i chi ei hagor, fe welwch y bydd y porwr yn dangos anogwr ar gyfer dadfygio PIN. Rhowch y PIN Debug a chliciwch ar OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Unwaith i ni symud ymlaen ar ôl rhoi'r PIN Dadfygio, gallwn gael mynediad i'r plisgyn rhyngweithiol.
Rydym yn cyrchu'r plisgyn o'r tu mewn i'r porwr a yn gallu archwilio gwerthoedd newidynnau i ganfod achos yr Eithriad a thrin y gwall mewn ffordd well. Edrychwch ar un o'r enghreifftiau a ddangosir yn y ddelwedd isod.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Nawr newidiwch y cod yn view.py, fel y dangosir isod. Sylwch ein bod wedi gwneud sylwadau ar y llinell a godwyd yn yr Eithriad.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Profi'r Cais Fflasg
Nawr, gadewch i ni ysgrifennu ein prawf cyntaf ar gyfer y cymhwysiad Fflasg yr ydym yn ei ddatblygu. Yn gyntaf, gosodwch y PyTest. Mae PyTest yn fframwaith profi. Mae'n ein helpu i ysgrifennu cod gwell.
Yn ogystal, dim ond oherwydd ein bod yn gallu ysgrifennu profion uned wrth ddatblygu ein cymwysiadau, mae'n bosibl dilyn y dull TDD. Mae TDD yn sefyll am Test-Driver Development. Yn ein tiwtorialau dilynol oy gyfres hon, byddwn bob amser yn ysgrifennu profion yn gyntaf ac yn datblygu ein barn neu fodelau.
Gosod PyTest
pip install pytest
Nawr creu cyfeiriadur o'r enw profion y tu mewn i'r cyfeiriadur ap ac yn hwnnw creu ffeil o'r enw test_hello.py. Gadewch i ni ysgrifennu ein prawf uned cyntaf i brofi ein golwg.
Copïwch y pyt cod canlynol a'i gludo i 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
Defnyddiwch y gorchymyn pytest isod i redeg y profion. Mae PyTest yn casglu'r Profion yn awtomatig ac yn dangos y canlyniadau ar yr allbwn safonol.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Creu Llif Gwaith GitHub
Rydym yn defnyddio Git Actions i greu llif gwaith CI/CD ar gyfer ein cymhwysiad sampl. Dilynwch y camau isod ar gyfer eich prosiect.
Cam 1: Llywiwch i'r dudalen cadwrfa ar GitHub. Cliciwch ar Git Actions.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Cam 2: Sgroliwch i lawr ar y dudalen a dewch o hyd i dempled llif gwaith presennol ar gyfer pecyn Python.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Cam 4: Unwaith y bydd ffurfweddiad llif gwaith python-package.yml yn agor, diweddarwch ef yn seiliedig ar y yaml ychwanegol a roddwyd gwerthoedd tag.
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
Rydym am brofi ein cymhwysiad Fflasg ar y dosbarthiad Ubuntu Linux diweddaraf. Yn ogystal â'r OS, rydym am redeg ein profion gan ddefnyddio Python 3.7 a Python 3.8 yn unig.
Cam 5: Ymrwymo'r python-package.yml gyda'r gwerthoedd wedi'u diweddaru.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Cam 6: Mae'r ymrwymiad ar y dudalen flaenorol yn mynd â ni i'r GitActionsswyddi.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Cam 7: [Dewisol]
Ar dudalen Swyddi Github ar gyfer yr ap tiwtorial enghreifftiol, gallwn greu bathodyn a lle ei fod ar y ffeil README.md ar gyfer dangos y statws adeiladu.
Nawr, pryd bynnag y bydd y newidiadau wedi'u hymrwymo i'r brif gangen, bydd Git Workflow, fel y'i hysgrifennwyd yn python-package.yml yn cael ei ddilyn a'i redeg ar Git Actions .
Casgliad
Yn y tiwtorial hwn, rydym wedi ymdrin â'r holl gysyniadau sylfaenol o ragofynion i sefydlu llif gwaith CI/CD ar gyfer cymhwysiad gwe a ddatblygwyd gan ddefnyddio Flask - Fframwaith datblygu gwe seiliedig ar Python.
Mae'r tiwtorial hwn yn ymdrin â'r holl gamau angenrheidiol megis gosod Python, lawrlwytho & gosod Flask, gweithio gyda Flask-Appbuilder, profi gyda PyTest, ac ati i ddechrau datblygu gwe gan ddefnyddio Python. Mae'r gymuned datblygu gwe fel arfer yn cymharu Fflasg â fframwaith datblygu gwe Python poblogaidd arall o'r enw Django.
Byddwn yn esbonio'r gwahaniaethau hyn a byddwn hefyd yn cymharu'r fframweithiau hyn yn un o'r tiwtorialau yn y gyfres hon.