flask app flask project layout with blueprint bootstrap
Tento tutoriál vysvetľuje, ako používať aplikácie Flask, Flask Blueprint a Flask Bootstrap v projekte Flask:
V tejto téme sa trochu posunieme od archetypu aplikácie Flask-Appbuilder, aby sme porozumeli konceptu Flask Blueprints. Prečítajte si náš návod Flask, Flask Templates & Views a Flask s databázami, ako sú MongoDB, SQLite a MySQL. Používali sme ukážkový projekt s názvom flaskTutorialApp.
Projekt však môžete vytvoriť aj úplne od začiatku pomocou príkazu flask fab create-app. Tento príkaz vytvorí lešenie požadované pre projekt Flask spolu s adresárom aplikácie na základe vami zadaného názvu aplikácie.
ako otvoriť mkv súbor v systéme Windows -
=> Pozrite si sériu The Flask Training Series for All
V tomto tutoriáli vysvetľujeme Flask App, Flask Blueprint a Flask Bootstrap. Našu aplikáciu Flask vyvíjame spočiatku pomocou už existujúceho lešenia, ktoré poskytuje Flask-Appbuilder. Potom vytvoríme Flask Blueprint s názvom hello2. Na záver popíšeme koncept Flask Docker ukotvením našej aplikácie Flask.
Čo sa dozviete:
Aplikácia Flask
Aplikácia Flask je iný názov pre aplikáciu Flask. Ak si všimnete kód napísaný v súbore __init__.py, všimnete si, že je vytvorená inštancia Flask a premenná je pomenovaná ako aplikácia. Inštancia triedy Flask je Flask Application, ktorá je inštanciou aplikácie WSGI.
from flask import Flask app = Flask(__name__)
Bankový plán
Flask Blueprint nám umožňuje udržiavať súvisiace funkcie pohromade a pomáha nám pri lepších vývojových postupoch. Niektoré z výhod Flask Blueprints sú nasledujúce:
- Ľahká organizácia rozsiahlych aplikácií.
- Zvyšuje opätovnú použiteľnosť kódu viacnásobnou registráciou toho istého Blueprintu.
- Súbor operácií sa zaznamená a po registrácii plánu je možné ich následne prehrať.
Vďaka vyššie uvedenému pozadiu uvedenému v Flask Blueprint môžeme napredovať a navrhnúť náš prvý Blueprint. Blueprint môžeme považovať aj za modul. Poďme vytvoriť plán HelloWorld.
Všetky komponenty, zdroje a vlastnosti plánu sú uchovávané a organizované oddelene od ostatného zdrojového kódu aplikácie Flask. To znamená, že Flask Blueprint môže mať svoje zobrazenia, formuláre, modely, statické súbory a šablóny.
Môžete vytvoriť viac plánov z tej istej sady zdrojov. Je však pravdepodobné, že to spôsobí zmätok a nejde o dobrý postup.
Vytvorte súbory a adresáre Flask Blueprint
Začnime vytvárať Flask Blueprint s názvom ahoj2. Pomocou nižšie uvedeného skriptu vytvorte adresárovú štruktúru po aktivácii vášho virtuálneho prostredia pomocou zdroja venv / bin / Activate po prechode do adresára aplikácie.
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'
Chceme, aby náš projekt hello2 Blueprint mal svoje zobrazenia, ktoré importujeme do jeho súboru __init__.py. Pre náš Blueprint vytvoríme samostatný adresár so šablónami a statickými adresármi na vykreslenie bankových zobrazení a na poskytovanie statických prostriedkov.
Štruktúra adresára plánu banky
Štruktúra adresára pre Blueprint by mala vyzerať nasledovne. Pomocou príkazu strom vytvorte podobný výstup.
Create Flask Blueprint View
Teraz si zadefinujeme jednoduchý pohľad dovnútra views.py. Otvorte hello2 / views.py a zadajte nižšie uvedený útržok kódu.
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)
Importujeme triedu Blueprint a metódu render_template. Potom vytvoríme objekt Blueprint zadaním názvov šablón a statických adresárov.
Potom definujeme trasu pomocou dekorátora @ hello2.route a kontrolóra s názvom hello2_view. Tento radič je funkcia Python. V tejto funkcii priradíme hodnotu premennej s názvom pozdrav a potom ju odovzdáme metóde render_template.
Vytvorte šablónu plánu banky
Teraz si vytvoríme šablónu hello.html. Ak ste čítali naše predchádzajúce návody, určite ste si všimli, že šablóna má rovnaký názov, aký sme vytvorili pre vykreslenie pohľadu HelloWorld. Pre túto hello2 Blueprint vytvoríme novú šablónu rozšírením predchádzajúcej.
Ďalej si všimnite, že sme pri volaní render_template na vykreslenie pozdravu v šablóne použili cestu sémantickú hello2 / hello.html. Tento vzor zabráni konfliktom medzi šablónami rovnakých mien.
Pomocou nižšie uvedeného fragmentu kódu vytvorte stránku hello.html a uložte ju pod adresou hello2 / templates / hello2 / path.
{% extends 'hello.html' %} {% block hello %} {{ greeting }} , from Software Testing Help.
{% endblock %}
Táto šablóna je takmer podobná súboru hello.html. Väčšinu svojich častí HTML však dedí zo stránky hello.html. Všimnite si použitie {% block hello%} a {% endblock%}. Blokovať ahoj v hello2 / hello.html prepíše blokové ahoj základnej šablóny hello.html.
Teraz otvorme súbor __init__.py programu hello2 Blueprint a spomenieme v ňom nižšie uvedený kód.
from app.hello2.views import * # expose all views at the blueprint level
V tomto vyhlásení importujeme všetky zdobené metódy, ktoré sme vytvorili v view.py programu hello2 Blueprint. V prípade potreby môžeme importovať iba tie metódy / radiče, ktoré sú pripravené na použitie alebo testovanie.
Zaregistrujte si bankový plán pomocou aplikácie Flask
Teraz otvorme súbor __init__.py v adresári aplikácie Flask a zaregistrujme náš hello2 Blueprint, ako je uvedené v nasledujúcom kóde.
from app.hello2 import hello2 app.register_blueprint(hello2, url_prefix='/hello2')
Upozorňujeme tiež, že tu môžeme selektívne importovať zobrazenia a registrovať iba tie, ktoré sú pripravené na použitie alebo testovanie.
Spustime našu aplikáciu Flask v režime ladenia pomocou príkazu python run.py z koreňového adresára projektu a prejdite na adresu http: // localhost: 8080 / hello2, aby ste zistili, či pohľad na hello2 funguje dobre.
Výsledok v prehliadači by mal byť podobný príkladu uvedenému nižšie.

Poďme pracovať na lepšej prezentácii plánu hello2 pomocou bootstrapového rámca Twitteru. Ďalej sa v ďalšej časti dozviete viac o voliteľných parametroch na zmenu správania Flaskovho plánu. Pozrime sa na to pomocou príkladu Flask Blueprint s názvom Flask Bootstrap.
Príklad aplikácie modulárnej banky s návrhom banky
Na základe nášho učenia sa o hello2 Flask Blueprint pridajme ďalšie plány, aby sme pochopili, ako môžeme vo Flask vytvárať modulárne aplikácie.
Predpokladajme, že máme webovú aplikáciu, ktorá slúži návštevníkom vo forme elektronických kníh, tutoriálov a kurzov. Má tiež ďalší obsah týkajúci sa informácií o tíme a domovskej stránke.
Ak sa pokúsime vyhovieť týmto novým funkciám v existujúcej aplikácii, budeme musieť vytvoriť pohľady v view.py a zodpovedajúce šablóny v adresári šablón aplikácie. Podobne musíme vytvárať modely a formuláre v models.py a forms.py.
Údržba celého aplikačného kódu však bude ťažkopádna a spolupráca s ostatnými členmi tímu bude príliš komplikovaná a môže mať za následok konflikty spáchania alebo zložitý vývojový pracovný tok.
V súčasnosti je v tomto konvenčnom prístupe štruktúra aplikácie uvedená nižšie.
Aby sme sa vyhli takémuto scenáru, môžeme použiť Flask Blueprints na vytvorenie modulov špecifických pre funkcie a príslušný obsah. Poďme vytvoriť nejaké plány banky s ich samostatnými zdrojmi.
Každé z rozložení Flask Blueprint bude vyzerať podobne ako nižšie.
Pomocou nižšie uvedeného skriptu vytvorte požadované súbory a adresáre pre plánované plány banky. Spustite tento skript z koreňového adresára projektu.
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
Najprv si vytvoríme funkcie pre domáci modul.
Otvorte súbor Views.py v domovskom adresári a aktualizujte ho pomocou nižšie uvedeného kódu.
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')
V tomto súbore sme importovali triedu Flask’s Blueprint a vytvorili sme jej inštancie s požadovanými parametrami so samostatnými šablónami a statickým priečinkom. Potom pomocou dekorácie @home deklarujeme pridruženú cestu metódy zobrazenia s názvom index.
Teraz vytvorte šablónu base.html Jinja2 v adresári šablón aplikácie. Na aktualizáciu súboru použite nižšie uvedený kód.
from Software Testing Help.
Learn More >> {% endblock %}
Rozšírili sme z Bootstrap’s base.html. Všimnite si použitie divu kontajnera triedy a hrdinskej jednotky. Okrem toho sme vytvorili tlačidlo, pomocou ktorého sa používatelia dozvedia viac. Tento HTML sme upravili a použili sme triedy z rámca Bootstrap spoločnosti Twitter.
Teraz obnovte stránku v Prehliadači na adrese http: // localhost: 8080 / hello2.html, aby ste videli zmenený vzhľad hello2.html.
Pohľad na zmenený Hello2 bude vyzerať podobne, ako je to zobrazené nižšie.

Použitie Flask-Bootstrap úplne závisí od blokov, ktoré sú k dispozícii na prepísanie alebo úpravu. Na prispôsobenie zážitku môžeme použiť nižšie uvedené bloky. Podrobný zoznam všetkých možných blokov nájdete na https://pythonhosted.org/Flask-Bootstrap/basic-usage.html.
Niekedy, keď chceme iba zmeniť blok a nie ho úplne nahradiť, môžeme na dosiahnutie výsledkov použiť funkciu super () Jinja2.
Vytvorte súbor s názvom hello2.css v časti hello2 / static a umiestnením nasledujúceho útržku kódu upravte farbu odseku do súboru hello2 / hello.html.
p { color: orange; }
Vezmite útržok kódu zobrazený nižšie a vložte ho do súboru hello2 / hello.html.
{% block styles } {{ super() }} {% endblock %}
Teraz otvorte views.py z Flask Blueprint hello2 a upravte vyhlásenie plánu ako je uvedené nižšie.
hello2 = Blueprint('hello2', __name__, template_folder='templates', static_folder='static')
Prejdite na registrovanú adresu URL Flask Blueprint, t. J. Http: // localhost: 8080 / hello2. Výsledok z dôvodu doteraz vykonaných zmien by mal vyzerať tak, ako je uvedené nižšie.

Flask Docker
Docker pomáha pri kontajnerovaní aplikácie. Izoluje prostredie, ktoré aplikácia Flask potrebuje, spôsobom, že nie sú potrebné kompletné virtualizované prostredia, ako sú virtuálne stroje.
Okrem toho majú docker kontejnery minimálnu stopu a sú pohodlnejšie na správu a škálovanie pomocou orchestračnej platformy. V dnešnej dobe, keď má každá iná aplikácia tiež kontajnerové nasadenie, sa aj my musíme naučiť nasadzovať našu ukážkovú aplikáciu ako docker kontajner.
Kontajner založený na systéme Linux môže bežať na Windows a MAC. Dockerized Flask App je teda možné nasadiť na akýkoľvek operačný systém bez ohľadu na operačný systém, v ktorom bola postavená.
V tejto časti vysvetlíme kroky ukotvenia aplikácie Flask. Tento projekt ukotvíme, aby bolo možné ho nasadiť do kontajnera, v ktorom sú zabalené všetky závislosti.
Najprv, nainštalujte Docker na vašom stroji.
sudo apt-get install docker.io
assert () c ++
Po dokončení inštalácie choďte do koreňového adresára nášho ukážkového projektu a vytvorte súbor Docker.
Do tohto súboru Docker zadajte nasledujúci kód.
FROM python:3 ADD . /flaskTutorialApp WORKDIR /flaskTutorialApp RUN pip install -r requirements.txt ENTRYPOINT ('python') CMD ('run.py')
Aktualizujte súbor config.py a zmeňte databázu na SQLite, ako je uvedené nižšie.
# The SQLAlchemy connection string. SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db') # SQLALCHEMY_DATABASE_URI = 'mysql://myapp@localhost/myapp'
Okrem toho, ak je to prvýkrát, čo pracujete s programom SQLite v tejto sérii tutoriálov, potom vytvorte administrátora pomocou príkazu flask fab create-admin.
Skontrolujte, či sa správca môže prihlásiť do aplikácie.
Teraz pomocou nasledujúceho príkazu vytvorte ukotviteľný obraz našej ukážkovej aplikácie.
sudo docker build --tag flask-tutorial
Tento príkaz trvá nejaký čas, kým stiahne zdroje z rozbočovača ukotvenia. Po dokončení tohto príkazu pomocou nasledujúceho príkazu skontrolujte, či sa obrázky objavili.
sudo docker images
Teraz spustite tento nedávno vytvorený obrázok Dockeru.
sudo docker run -p 5001:8080 flask-tutorial:latest
Konzola zobrazí správy protokolu vývojového servera.
Výsledkom inštalácie Dockeru je vytvorenie virtuálneho sieťového adaptéra s názvom docker0. Vyhľadajte adresu IP pomocou príkazu sudo ifconfig. Po získaní adresy IP Dockeru môžete k aplikácii pristupovať prechodom na nižšie uvedenú adresu URL.
http: //: 5001
Keď si budete istí vývojom aplikácie, môžete svoj obraz Docker nasadiť do centra Docker Hub, kde si ho môžu ostatní stiahnuť a používať.
Testovanie plánu banky
Teraz vytvorme niekoľko testov na testovanie Blueprint ahoj2. Pozrime sa, či naša vzorová aplikácia vráti správny kód HTTP, keď klient odošle požiadavku Získať prostriedky na koncový bod / hello2 alebo nie. Ak si pamätáte, zaregistrovali sme náš Flask Blueprint hello2 s url_prefix s hodnotou ako / hello2.
V rámci testov vytvorte súbor s názvom test_blueprint.py a pridajte do neho nasledujúci test.
def test_hello2(client): resp = client.get('/hello2') assert 308 == resp.status_code
HTTP 308 sa týka Permanent Redirect a očakáva sa, že naša aplikácia Flask musí presmerovať požiadavku na zdroje súvisiace s Blueprintom zvaným hello2.
Teraz pridajme ďalší test na kontrolu koreňovej cesty zdrojov nášho Plánu. Pridajme test, aby sme zistili, či má hodnotu alebo nie.
from app.hello2 import hello2 def test_rootpath(): assert hello2.root_path is not None
Teraz vykonajme tieto testy spolu s ostatnými testami, aby sme sa uistili, že vyhovujú.
pytest -v
Uvidíte podobný výstup výsledkov testu, ako je uvedené nižšie.

Teraz odovzdajte všetky zmeny úložisku a zverejnite ich vo vzdialenom úložisku na Githube. Porovnajte rozdiely s kódom s kódom hlavnej vetvy a vytvorte požiadavku na načítanie, ak nedôjde ku konfliktom.
Požiadavka na stiahnutie vyvolá úlohy zostavenia, ktoré sú súčasťou nášho pracovného toku Github. Ak všetky kontroly požiadaviek na stiahnutie z tutoriálu-4 zlyhajú, potom môžeme túto vetvu bezpečne zlúčiť s hlavným serverom.

často kladené otázky
Otázka 1) Čo je to Flask BluePrint?
Odpoveď: Flask Blueprint je spôsob, ako štruktúru aplikácie Flask rozdeliť na menšie a opakovane použiteľné moduly. Flask Blueprint má svoje samostatné zdroje, ako sú zobrazenia, šablóny, statické súbory, modely, formuláre atď. Prístup Flask Blueprint používame na vytváranie ľahko udržiavateľných a škálovateľných aplikácií Flask.
Otázka č. 2) Ako sa používa Flask Blueprint?
Odpoveď: Aby sme mohli používať Flask Blueprint, musíme ho importovať a zaregistrovať pomocou aplikácie app.register_blueprint v objekte Flask Application. Môžeme poslať hodnotu do parametra url_prifix, aby sme pripravili cestu k trasám Flaskovho plánu.
Záver
V tomto tutoriáli sme vysvetlili Flask Blueprints spolu s konceptmi vytvárania statických prostriedkov pre aplikáciu Flask. Preskúmali sme výhody používania Flask Blueprint spolu s myšlienkami na zdroje plánu pomocou pluginu Flask s názvom Flask-Bootstrap.
Taktiež sme sa venovali koncepciám vytvorenia Docker obrázka ukážkovej aplikácie Flask tutorial. Ďalej sme tiež vytvorili dva testy na validáciu Flask Blueprints.
V našom ďalšom návode sa budeme venovať bežne sledovaným vzorom pri vytváraní funkcií vo webových aplikáciách pomocou banky.
=> Navštívte tu a naučíte sa banku od nuly
Odporúčané čítanie
- Výukový program pre Flask API s príkladom Rozšírenie banky s API
- Top 31 populárnych otázok na rozhovor s pythonovskou bankou s odpoveďami
- Uzol Django Vs Flask Vs: Ktorý rámec zvoliť
- Dizajnové vzory banky a osvedčené postupy pre webové aplikácie
- (Top 10) Najlepšie softvérové platformy na vývoj aplikácií z roku 2021
- Top 51 Bootstrap Interview Otázky a odpovede