flask app flask project layout with blueprint bootstrap
Denne opplæringen forklarer hvordan du bruker Flask App, Flask Blueprint og Flask Bootstrap i et Flask-prosjekt:
I dette emnet vil vi bevege oss litt bort fra arketypen til Flask-Appbuilder for å bygge vår forståelse av Flask Blueprints. Les veiledningen vår om Flask, Flask Templates & Views, og Flask med databaser som MongoDB, SQLite og MySQL. Vi har brukt et eksempel på et prosjekt som heter flaskTutorialApp.
Du kan imidlertid også opprette prosjektet fra bunnen av ved hjelp av kolben fab create-app-kommando. Denne kommandoen oppretter stillaset som kreves for et Flask-prosjekt sammen med en applikasjonskatalog basert på applikasjonsnavnet du har gitt.
=> Se flaskeopplæringsserien for alle
I denne opplæringen forklarer vi om Flask App, Flask Blueprint og Flask Bootstrap. Vi utvikler vår Flask-app i utgangspunktet med det eksisterende stillaset som leveres av Flask-Appbuilder. Vi oppretter deretter en Flask Blueprint kalt hello2. Til slutt vil vi beskrive Flask Docker-konseptet ved å dockerisere vår Flask-app.
Hva du vil lære:
Kolbe-app
Flask App er et annet navn for en Flask Application. Hvis du merker koden som er skrevet i filen __init__.py, vil du legge merke til at en forekomst av Flask er opprettet, og variabelen heter som app. Forekomsten av klassen Flask er Flask Application, som er forekomsten av WSGI-applikasjonen.
from flask import Flask app = Flask(__name__)
Kolbe-tegning
Flask Blueprint lar oss holde relaterte funksjoner sammen og hjelper til med å forbedre utviklingspraksis. Noen av fordelene med Flask Blueprints er som følger:
- Enkel organisering av applikasjoner i stor skala.
- Øker gjenbrukbarheten av koden ved å registrere den samme Blueprint flere ganger.
- Et sett med operasjoner registreres og kan deretter spilles på nytt etter registrering av en blåkopi.
Med den ovennevnte bakgrunnen gitt på Flask Blueprint, kan vi gå videre og designe vår første Blueprint. Vi kan også tenke på Blueprint som en modul. La oss lage en HelloWorld-tegning.
Alle komponenter, ressurser og funksjoner i en tegning holdes og organiseres atskilt fra den andre kildekoden til Flask-applikasjonen. Det betyr at en Flask Blueprint kan ha visninger, skjemaer, modeller, statiske filer og maler.
Du kan lage flere tegninger fra samme ressursett. Imidlertid vil det sannsynligvis skape forvirring og er ikke god praksis.
Lag Flask Blueprint-filer og kataloger
La oss begynne å lage en Flask Blueprint med navnet hello2. Bruk skriptet nedenfor for å opprette katalogstrukturen etter at du har aktivert det virtuelle miljøet ditt ved å bruke kilden venv / bin / aktivere etter å ha gått til applikasjonskatalogen.
blueprint_name='hello2' mkdir '$blueprint_name' mkdir -p '$blueprint_name/templates/$blueprint_name' touch '$blueprint_name/templates/$blueprint_name/hello.html' mkdir '$blueprint_name/static/' touch '$blueprint_name/__init__.py' touch '$blueprint_name/views.py'
Vi vil at hello2 Blueprint skal ha sine synspunkter som vi vil importere i __init__.py. Vi oppretter en egen katalog for Blueprint med maler og statiske kataloger for å gjengi henholdsvis Kolbe-visninger og servere statiske ressurser.
Flask Blueprint Directory Structure
Katalogstrukturen for Blueprint skal se ut som vist nedenfor. Bruk trekommandoen for å lage en lignende utgang.
Create Flask Blueprint View
La oss nå definere en enkel visning inne i views.py. Åpne hello2 / views.py og skriv inn kodebiten nedenfor.
from flask import Blueprint, render_template hello2 = Blueprint( 'hello2', __name__, template_folder='templates', static_folder='static' ) @hello2.route('/hello2') def hello2_view(): greeting = 'Hello World 2' return render_template('hello2/hello.html', greeting=greeting)
Vi importerer Blueprint-klassen og render_template-metoden. Deretter lager vi et Blueprint-objekt ved å gi navnene på malen og statiske kataloger.
Deretter definerer vi en rute ved hjelp av dekoratøren @ hello2.route og en kontroller med navnet hello2_view. Denne kontrolleren er en Python-funksjon. I denne funksjonen tildeler vi en verdi til en variabel som kalles hilsen, og sender den deretter til render_template-metoden.
Lag flaskekopiemal
La oss nå lage malen hallo.html. Hvis du har lest våre tidligere veiledninger, må du ha lagt merke til at malen har samme navn som vi opprettet for å gjengi HelloWorld-visningen. For denne hello2 Blueprint oppretter vi en ny mal ved å utvide den forrige.
Legg også merke til at vi har brukt en sti semantisk hello2 / hello.html mens vi ringer render_template for å gjengi hilsen i malen. Dette mønsteret unngår konflikter mellom malene med samme navn.
Bruk kodebiten nedenfor for å lage hello.html og lagre den under hello2 / templates / hello2 / path.
beste mp3 nedlastingssider for android
{% extends 'hello.html' %} {% block hello %} {{ greeting }} , from Software Testing Help.
{% endblock %}
Denne malen er nesten lik hello.html. Imidlertid arver den de fleste av HTML-delene fra hello.html. Legg merke til bruken av {% block hallo%} og {% endblock%}. Blokkere hei i hello2 / hello.html overstyrer blokken hei til basismalen hallo.html.
La oss nå åpne __init__.py-filen til hello2 Blueprint og nevne koden nedenfor i den.
from app.hello2.views import * # expose all views at the blueprint level
I denne uttalelsen importerer vi alle de dekorerte metodene som vi har opprettet i views.py av hello2 Blueprint. Om nødvendig kan vi bare importere de metodene / kontrollerne som er klare til å brukes eller testes.
Registrer en kolbe-tegning med kolbe-appen
La oss nå åpne __init__.py under Flask-applikasjonskatalogen og registrere hello2 Blueprint som vist i koden nedenfor.
from app.hello2 import hello2 app.register_blueprint(hello2, url_prefix='/hello2')
Vær også oppmerksom på at vi selektivt kan importere visninger og bare registrere de som er klare til bruk eller testing.
La oss kjøre Flask-appen vår i feilsøkingsmodus med kommandoen python run.py fra prosjektets rotkatalog og navigere til http: // localhost: 8080 / hello2 for å se om utsikten til hello2 fungerer bra.
Resultatet i nettleseren skal være lik eksemplet vist nedenfor.

La oss jobbe med en bedre presentasjon av hello2-tegningen ved å bruke Twitters bootstrap-rammeverk. I neste avsnitt vil du dessuten lære mer om de valgfrie parametrene for å endre oppførselen til en Flask Blueprint. La oss se det ved hjelp av et eksempel på en Flask Blueprint kalt Flask Bootstrap.
Eksempel på applikasjon med modulær kolbe med kolbe-tegning
Basert på læringen vår om hello2 Flask Blueprint, la oss legge til noen flere tegninger for å forstå hvordan vi kan lage modulære applikasjoner i Flask.
La oss anta at vi har en webapplikasjon som serverer innhold til besøkende i form av ebøker, opplæringsprogrammer og kurs. Det har også noe ekstra innhold angående informasjon om teamet og en hjemmeside.
Hvis vi prøver å imøtekomme disse nye funksjonene i den eksisterende applikasjonen, må vi opprette visninger i views.py og tilhørende maler under applikasjonsmalkatalogen. På samme måte må vi lage modeller og skjemaer i models.py og forms.py.
Imidlertid vil det være tungvint å opprettholde all søknadskode, og samarbeid med de andre teammedlemmene vil være for komplisert og kan resultere i begå konflikter eller kompleks arbeidsflyt.
For tiden, i denne konvensjonelle tilnærmingen, er applikasjonsstrukturen som vist nedenfor.
For å unngå et slikt scenario kan vi bruke Flask Blueprints for å lage moduler som er spesifikke for funksjonene og det respektive innholdet. La oss lage noen Flask Blueprints, med sine egne ressurser.
Hver av Flask Blueprint-layoutene vil se ut som den som er vist nedenfor.
Bruk skriptet nedenfor for å lage de nødvendige filene og katalogene for de planlagte Flask Blueprints. Kjør dette skriptet fra prosjektets rotkatalog.
cd app for dir in home courses tutorials ebooks do echo 'generating files for $dir ..' mkdir -p $dir/templates/$dir touch $dir/templates/$dir/$dir.html mkdir $dir/static touch $dir/static/style.css touch $dir/__init__.py touch $dir/views.py touch $dir/models.py touch $dir/forms.py done
La oss først lage funksjoner for hjemmemodulen.
Åpne views.py under hjemmekatalogen, og oppdater den med koden nedenfor.
from flask import render_template, Blueprint home = Blueprint('home', __name__, template_folder='templates', static_folder='static') @home.route('/') def index(): return render_template('home/home.html')
I denne filen har vi importert Flask's Blueprint-klasse og instantiert den med de nødvendige parametrene med separate maler og en statisk mappe. Deretter bruker vi @home dekorasjon for å erklære den tilknyttede ruten for visningsmetoden kalt indeks.
Opprett nå en base.html Jinja2-mal under malkatalogen til appen. Bruk koden nedenfor for å oppdatere filen.
from Software Testing Help.
Learn More >> {% endblock %}
Vi har utvidet fra Bootstraps base.html. Legg merke til bruken av div av klassebeholderen og heltenheten. Videre har vi laget en knapp for brukere å lære mer. Vi endret denne HTML-en og brukte klasser fra Twitters Bootstrap-rammeverk.
Oppdater siden i nettleseren på http: // localhost: 8080 / hello2.html for å se det endrede utseendet til hello2.html.
python multiple hvis utsagn på en linje
Visningen av Endret Hello2 vil se ut som den som er vist nedenfor.

Bruken av Flask-Bootstrap er helt avhengig av blokkene som er tilgjengelige for overstyring eller modifisering. Vi kan bruke blokkene nedenfor for å tilpasse opplevelsen. En detaljert liste over alle mulige blokker kan sees på https://pythonhosted.org/Flask-Bootstrap/basic-usage.html.
Noen ganger når vi bare vil endre en blokk i stedet for å erstatte den helt, kan vi bruke Jinja2s super () -funksjon for å oppnå resultatene.
Opprett en fil som heter hello2.css under hello2 / statisk, og plasser kodebiten nedenfor for å style fargen på avsnittet i hello2 / hello.html.
p { color: orange; }
Ta kodebiten vist nedenfor og legg den i hello2 / hello.html.
{% block styles } {{ super() }} {% endblock %}
Åpne nå views.py av Flask Blueprint hello2 og modifiser blueprint-setningen som vist nedenfor.
hello2 = Blueprint('hello2', __name__, template_folder='templates', static_folder='static')
Naviger til Flask Blueprint sin registrerte URL, dvs. http: // localhost: 8080 / hello2 igjen. Resultatet på grunn av endringene som er gjort så langt, bør se ut som vist nedenfor.

Flask Docker
Docker hjelper med å containerisere et program. Det isolerer miljøet som Flask-applikasjonen trenger på en måte som det ikke er krav om komplette virtualiserte miljøer som virtuelle maskiner.
Dessuten har dockercontainere et minimalt fotavtrykk og er mer komfortable å administrere og skalere ved hjelp av en orkestrasjonsplattform. I disse dager, når alle andre applikasjoner også har containerisert distribusjon, må vi også lære å distribuere eksempelprogrammet vårt som en dockercontainer.
En Linux-basert container kan kjøre på Windows og en MAC. En dockerized Flask-app kan således distribueres på ethvert operativsystem uavhengig av operativsystemet den ble bygget i.
I denne delen vil vi forklare trinnene for docking av en Flask-app. Vi vil dockerisere dette prosjektet slik at det kan distribueres i en container med alle avhengigheter pakket inne.
Først, installer Docker på maskinen din.
sudo apt-get install docker.io
Når installasjonen er fullført, går du inn i rotkatalogen til eksempelprosjektet vårt og oppretter en Dockerfile.
Skriv koden nedenfor i den Dockerfile.
FROM python:3 ADD . /flaskTutorialApp WORKDIR /flaskTutorialApp RUN pip install -r requirements.txt ENTRYPOINT ['python'] CMD ['run.py']
Oppdater config.py-filen og endre databasen til SQLite, som vist nedenfor.
# The SQLAlchemy connection string. SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db') # SQLALCHEMY_DATABASE_URI = 'mysql://myapp@localhost/myapp'
Dessuten, hvis dette er første gang du jobber med SQLite i denne opplæringsserien, kan du opprette adminbrukeren ved å bruke kolben fab create-admin-kommando.
Sjekk om administratorbrukeren kan logge på applikasjonen.
Nå bygger du dockerbildet til eksempelprogrammet vårt ved hjelp av kommandoen nedenfor.
sudo docker build --tag flask-tutorial
Denne kommandoen tar litt tid ettersom den laster ned ressurser fra docker-huben. Når denne kommandoen er fullført, må du kontrollere at bildene har dukket opp ved å bruke kommandoen nedenfor.
sudo docker images
Kjør nå dette nylig opprettede Docker-bildet.
sudo docker run -p 5001:8080 flask-tutorial:latest
Konsollen viser loggmeldingene til utviklingsserveren.
Installasjon av Docker resulterer i opprettelsen av et virtuelt nettverkskort med navnet docker0. Finn IP-adressen ved å bruke sudo ifconfig-kommandoen. Når du har fått IP-adressen til Docker, kan du få tilgang til applikasjonen ved å navigere til URL-adressen nedenfor.
http: //: 5001
Når du er trygg på utviklingen av applikasjonen, kan du distribuere Docker-bildet ditt til Docker Hub slik at de andre kan lastes ned og bruke.
Testing The Flask Blueprint
La oss nå lage noen tester for å teste Blueprint hello2. La oss se om eksempelappen vår returnerer riktig HTTP-kode når klienten sender en Get-forespørsel om ressurser på / hallo2-sluttpunkt eller ikke. Hvis du husker det, registrerte vi vår Flask Blueprint hello2 med et url_prefix med verdien som / hello2.
Opprett en fil som heter test_blueprint.py under tester og legg til følgende test i den.
def test_hello2(client): resp = client.get('/hello2') assert 308 == resp.status_code
HTTP 308 gjelder Permanent Redirect, og det forventes at vår Flask-app må omdirigere forespørselen til ressursene relatert til Blueprint som heter hello2.
La oss nå legge til en ny test for å sjekke rotstien til ressursene til Blueprint. La oss legge til en test for å se om den har en verdi eller ikke.
from app.hello2 import hello2 def test_rootpath(): assert hello2.root_path is not None
La oss nå kjøre disse testene sammen med de andre testene for å sikre at de består.
pytest -v
Du vil se en lignende produksjon av testresultatene, som vist nedenfor.

Forplikt nå alle endringene i repoen og publiser endringene i det eksterne depotet på Github. Sammenlign forskjellene med koden med hovedgrenen og lag en pull-forespørsel hvis det ikke er noen konflikter.
Pull-forespørselen påkaller byggejobber som er en del av Github Workflow. Hvis alle kontroller for trekkforespørsler fra tutorial-4 ikke mislykkes, kan vi trygt slå sammen denne grenen med mesteren.

ofte stilte spørsmål
Q # 1) Hva er Flask BluePrint?
Svar: Flask Blueprint er en måte å strukturere en Flask Application på i mindre og gjenbrukbare moduler. En Flask Blueprint har sine separate ressurser som visninger, maler, statiske filer, modeller, skjemaer etc. Vi bruker Flask Blueprint-tilnærmingen for å lage lett vedlikeholdbare og skalerbare Flask Applications.
Q # 2) Hvordan bruker du Flask Blueprint?
Svar: For å bruke Flask Blueprint, må vi importere den og registrere den med Flask Application-objektet ved hjelp av metoden app.register_blueprint. Vi kan gi en verdi til url_prifix-parameteren for å legge en vei til rutene til Flask Blueprint.
Konklusjon
I denne opplæringen forklarte vi Flask Blueprints sammen med konsepter for å lage statiske ressurser for en Flask-app. Vi utforsket fordelene ved å bruke Flask Blueprint sammen med tankene til blueprint-ressurser ved hjelp av et Flask-plugin som heter Flask-Bootstrap.
Vi dekket også konseptene for å lage Docker-bildet av prøveflasken. Videre opprettet vi også to tester for å validere Flask Blueprints.
I vår neste opplæring vil vi dekke de ofte følgede mønstrene mens vi bygger funksjoner i webapplikasjonene ved hjelp av Flask.
=> Besøk her for å lære kolbe fra bunnen av
Anbefalt lesing
- Flask API-veiledning med eksempel | Utvide kolbe med API-er
- Topp 31 populære Python Flask-intervjuspørsmål med svar
- Django Vs Flask Vs Node: Hvilken ramme du skal velge
- Flaskedesignmønstre og beste fremgangsmåter for webapplikasjoner
- [Topp 10] Beste apputviklingsprogramvareplattformer fra 2021
- Topp 51 Bootstrap intervju spørsmål og svar