flask app flask project layout with blueprint bootstrap
Tento kurz vysvětluje, jak používat aplikaci Flask, Flask Blueprint a Flask Bootstrap v projektu Flask:
V tomto tématu se trochu vzdálíme od archetypu Flask-Appbuilder, abychom porozuměli Flask Blueprints. Přečtěte si náš výukový program Flask, Flask Templates & Views a Flask s databázemi, jako jsou MongoDB, SQLite a MySQL. Používali jsme ukázkový projekt s názvem flaskTutorialApp.
Můžete však také vytvořit projekt od nuly pomocí příkazu flask fab create-app. Tento příkaz vytvoří scaffolding požadovaný pro projekt Flask spolu s adresářem aplikace na základě vámi zadaného názvu aplikace.
=> Podívejte se na The Flask Training Series for All
V tomto kurzu vysvětlíme Flask App, Flask Blueprint a Flask Bootstrap. Našu aplikaci Flask vyvíjíme zpočátku s již existujícím lešením, které poskytuje Flask-Appbuilder. Poté vytvoříme Flask Blueprint s názvem hello2. Nakonec popíšeme koncept Flask Docker dockerizací naší aplikace Flask.
Co se naučíte:
Baňka App
Aplikace Flask je jiný název pro aplikaci Flask. Pokud si všimnete kódu napsaného v souboru __init__.py, všimnete si, že je vytvořena instance Flask a proměnná je pojmenována jako aplikace. Instance třídy Flask je aplikace Flask, což je instance aplikace WSGI.
from flask import Flask app = Flask(__name__)
Plán baňky
Flask Blueprint nám umožňuje udržet související funkce pohromadě a pomáhá při lepších vývojových postupech. Mezi výhody Flask Blueprints patří:
- Snadná organizace rozsáhlých aplikací.
- Zvyšuje opětovnou použitelnost kódu registrací stejného Blueprintu vícekrát.
- Sada operací se zaznamená a lze je po registraci plánu znovu přehrát.
S výše uvedeným pozadím uvedeným v Flask Blueprint můžeme pokročit a navrhnout náš první Blueprint. Blueprint můžeme považovat také za modul. Vytvořme plán HelloWorld.
Všechny komponenty, prostředky a funkce podrobného plánu jsou uchovávány a organizovány odděleně od druhého zdrojového kódu aplikace Flask. To znamená, že Flask Blueprint může mít své pohledy, formuláře, modely, statické soubory a šablony.
Ze stejné sady prostředků můžete vytvořit více plánů. Je však pravděpodobné, že to způsobí zmatek a není to dobrý postup.
Vytvořte soubory a adresáře flaskových plánů
Začněme vytvářet Flask Blueprint se jménem hello2. Pomocí níže uvedeného skriptu vytvořte adresářovou strukturu po aktivaci virtuálního prostředí pomocí zdroje venv / bin / Activate po přechodu do adresáře aplikace.
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áš hello2 Blueprint měl své pohledy, které budeme importovat do jeho __init__.py. Pro náš Blueprint vytvoříme samostatný adresář se šablonami a statickými adresáři, abychom mohli vykreslit zobrazení baňky a sloužit statické prostředky.
Struktura adresáře plánu baňky
Struktura adresáře pro Blueprint by měla vypadat, jak je znázorněno níže. Pomocí příkazu tree vytvořte podobný výstup.
Create Flask Blueprint View
Pojďme si nyní definovat jednoduchý pohled uvnitř view.py. Otevřete hello2 / views.py a zadejte níže uvedený fragment 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 třídu Blueprint a metodu render_template. Poté vytvoříme objekt Blueprint zadáním názvů šablony a statických adresářů.
nejlepší aplikace časového rozvrhu pro více zaměstnanců
Poté definujeme trasu pomocí dekorátoru @ hello2.route a kontroleru s názvem hello2_view. Tento řadič je funkce Pythonu. V této funkci přiřadíme hodnotu proměnné zvané pozdrav a poté ji předáme metodě render_template.
Vytvořte šablonu plánu baňky
Nyní vytvořme šablonu hello.html. Pokud jste četli naše předchozí výukové programy, pak jste si určitě všimli, že šablona má stejný název, jaký jsme vytvořili pro vykreslení pohledu HelloWorld. Pro tento hello2 Blueprint vytvoříme novou šablonu rozšířením předchozí.
Dále si všimněte, že jsme při volání render_template k vykreslení pozdravu v šabloně použili cestu sémantickou hello2 / hello.html. Tento vzor se vyhne konfliktům mezi šablonami se stejnými názvy.
Pomocí níže uvedeného fragmentu kódu vytvořte hello.html a uložte jej pod hello2 / templates / hello2 / path.
{% extends 'hello.html' %} {% block hello %} {{ greeting }} , from Software Testing Help.
{% endblock %}
Tato šablona je téměř podobná hello.html. Většinu svých částí HTML však dědí z hello.html. Všimněte si použití {% block hello%} a {% endblock%}. Blokovat ahoj v hello2 / hello.html přepíše blokové ahoj základní šablony hello.html.
Nyní otevřeme soubor __init__.py hello2 Blueprint a zmíníme v něm níže uvedený kód.
from app.hello2.views import * # expose all views at the blueprint level
V tomto prohlášení importujeme všechny zdobené metody, které jsme vytvořili v views.py hello2 Blueprint. V případě potřeby můžeme importovat pouze ty metody / řadiče, které jsou připraveny k použití nebo testování.
Zaregistrujte si plán baňky pomocí aplikace Baňky
Nyní otevřete soubor __init__.py v adresáři aplikace Flask a zaregistrujte náš hello2 Blueprint, jak je znázorněno v níže uvedeném kódu.
from app.hello2 import hello2 app.register_blueprint(hello2, url_prefix='/hello2')
Zde si také všimněte, že můžeme selektivně importovat pohledy a registrovat pouze ty, které jsou připraveny k použití nebo testování.
Spusťte naši aplikaci Flask v režimu ladění pomocí příkazu python run.py z kořenového adresáře projektu a přejděte na http: // localhost: 8080 / hello2, abyste zjistili, zda zobrazení hello2 funguje dobře.
Výsledek v prohlížeči by měl být podobný příkladu uvedenému níže.

Pojďme pracovat na lepší prezentaci plánu hello2 pomocí bootstrapového rámce Twitteru. Kromě toho se v další části dozvíte více o volitelných parametrech pro změnu chování Flask Blueprint. Podívejme se na to pomocí příkladu Flask Blueprint s názvem Flask Bootstrap.
Příklad aplikace modulární baňky s plánem baňky
Na základě našeho učení hello2 Flask Blueprint přidáme několik dalších plánů, abychom pochopili, jak můžeme vytvářet modulární aplikace v Flask.
Předpokládejme, že máme webovou aplikaci, která poskytuje obsah návštěvníkům ve formě e-knih, tutoriálů a kurzů. Má také další obsah týkající se informací o týmu a domovské stránky.
Pokud se pokusíme přizpůsobit tyto nové funkce v existující aplikaci, pak budeme muset vytvořit pohledy v views.py a odpovídající šablony v adresáři šablony aplikace. Podobně musíme vytvořit modely a formuláře v models.py a forms.py.
Udržování veškerého kódu aplikace však bude těžkopádné a spolupráce s ostatními členy týmu bude příliš komplikovaná a může mít za následek konflikty potvrzení nebo složitý pracovní postup vývoje.
V současné době je v tomto konvenčním přístupu struktura aplikace znázorněna níže.
Abychom se takovému scénáři vyhnuli, můžeme využít Flask Blueprints k vytvoření modulů specifických pro funkce a příslušný obsah. Pojďme vytvořit nějaké plány baňky s jejich samostatnými zdroji.
Každé z rozložení Flask Blueprint bude vypadat podobně jako níže.
co dělá c ++
Pomocí níže uvedeného skriptu vytvořte požadované soubory a adresáře pro plánované plány baňky. Spusťte tento skript z kořenového adresáře 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
Nejprve vytvořme funkce pro domácí modul.
Otevřete v domovském adresáři views.py a aktualizujte jej níže uvedeným kódem.
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 souboru jsme importovali třídu Flask's Blueprint a vytvořili jsme její instanci s požadovanými parametry se samostatnými šablonami a statickou složkou. Pak použijeme dekoraci @home k deklaraci přidružené trasy metody zobrazení zvané index.
Nyní vytvořte šablonu base.html Jinja2 v adresáři šablon aplikace. K aktualizaci souboru použijte níže uvedený kód.
from Software Testing Help.
Learn More >> {% endblock %}
Rozšířili jsme se z Bootstrap's base.html. Všimněte si použití div kontejneru třídy a hrdinové jednotky. Kromě toho jsme vytvořili tlačítko, aby se uživatelé mohli dozvědět více. Upravili jsme tento HTML a použili třídy z rámce Bootstrap Twitteru.
Nyní obnovte stránku v prohlížeči na adrese http: // localhost: 8080 / hello2.html, abyste viděli změněný vzhled hello2.html.
Pohled na Změněný Hello2 bude vypadat podobně jako níže.

Použití Flask-Bootstrap je zcela závislé na blocích, které jsou k dispozici pro přepsání nebo úpravu. Můžeme použít níže uvedené bloky k přizpůsobení prostředí. Podrobný seznam všech možných bloků najdete na https://pythonhosted.org/Flask-Bootstrap/basic-usage.html.
Někdy, když chceme pouze upravit blok, místo abychom jej úplně nahradili, můžeme k dosažení výsledků použít funkci super () Jinja2.
Vytvořte soubor s názvem hello2.css pod hello2 / static a umístěte níže uvedený fragment kódu, který upraví barvu odstavce v hello2 / hello.html.
p { color: orange; }
Vezměte níže uvedený fragment kódu a vložte jej do hello2 / hello.html.
{% block styles } {{ super() }} {% endblock %}
Nyní otevřete views.py z Flask Blueprint hello2 a upravte příkaz blueprint, jak je znázorněno níže.
hello2 = Blueprint('hello2', __name__, template_folder='templates', static_folder='static')
Přejděte na zaregistrovanou adresu URL Flask Blueprint, tj. Znovu http: // localhost: 8080 / hello2. Výsledek z důvodu dosud provedených změn by měl vypadat, jak je znázorněno níže.

Baňka Docker
Docker pomáhá při kontejnerizaci aplikace. Izoluje prostředí, které aplikace Flask potřebuje, způsobem, který nevyžaduje žádný požadavek na úplná virtualizovaná prostředí, jako jsou virtuální stroje.
Kromě toho docker kontejnery mají minimální stopu a jsou pohodlnější pro správu a škálování pomocí orchestrační platformy. V těchto dnech, kdy má každá další aplikace také kontejnerové nasazení, se také musíme naučit nasazovat naši ukázkovou aplikaci jako přístavní kontejner.
Kontejner založený na Linuxu může běžet na Windows a MAC. Dockerized Flask App, teda, je nasaditelný na jakémkoli operačním systému bez ohledu na operační systém, ve kterém byla postavena.
V této části vysvětlíme kroky ukotvení aplikace Flask. Tento projekt ukotvíme, aby jej bylo možné nasadit do kontejneru se všemi závislostmi zabalenými uvnitř.
První, nainstalujte Docker na vašem stroji.
sudo apt-get install docker.io
Po dokončení instalace přejděte do kořenového adresáře našeho ukázkového projektu a vytvořte Dockerfile.
Napište níže uvedený kód do tohoto souboru Docker.
FROM python:3 ADD . /flaskTutorialApp WORKDIR /flaskTutorialApp RUN pip install -r requirements.txt ENTRYPOINT ('python') CMD ('run.py')
Aktualizujte soubor config.py a změňte databázi na SQLite, jak je znázorněno níže.
nástroje pro maskování dat pro server sql
# The SQLAlchemy connection string. SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db') # SQLALCHEMY_DATABASE_URI = 'mysql://myapp@localhost/myapp'
Kromě toho, pokud je to poprvé, co pracujete s SQLite v této sérii kurzů, vytvořte prosím uživatele admin pomocí příkazu flask fab create-admin.
Zkontrolujte, zda se správce může do aplikace přihlásit.
Nyní vytvořte docker image naší ukázkové aplikace pomocí níže uvedeného příkazu.
sudo docker build --tag flask-tutorial
Tento příkaz trvá nějakou dobu, protože stahuje prostředky z centra dockeru. Po dokončení tohoto příkazu zkontrolujte pomocí následujícího příkazu, zda se obrázky objevily.
sudo docker images
Nyní spusťte tento nedávno vytvořený obraz Dockeru.
sudo docker run -p 5001:8080 flask-tutorial:latest
Konzola zobrazí zprávy protokolu vývojového serveru.
Instalace Dockeru má za následek vytvoření virtuálního síťového adaptéru s názvem docker0. Najděte IP adresu pomocí příkazu sudo ifconfig. Jakmile získáte IP adresu Dockeru, můžete k aplikaci přistupovat přechodem na níže uvedenou adresu URL.
http: //: 5001
Jakmile si budete jisti vývojem aplikace, můžete nasadit image Dockeru do centra Docker Hub pro ostatní ke stažení a použití.
Testování plánu baňky
Nyní vytvořme několik testů pro testování Blueprint hello2. Podívejme se, zda naše ukázková aplikace vrací správný kód HTTP, když klient odešle požadavek na získání prostředků na koncový bod / hello2 nebo ne. Pokud si pamatujete, zaregistrovali jsme náš Flask Blueprint hello2 s url_prefix s hodnotou jako / hello2.
Vytvořte soubor s názvem test_blueprint.py pod testy a přidejte do něj následující test.
def test_hello2(client): resp = client.get('/hello2') assert 308 == resp.status_code
HTTP 308 se týká Permanent Redirect a očekává se, že naše aplikace Flask musí přesměrovat požadavek na prostředky související s Blueprintem zvaným hello2.
Nyní přidáme další test ke kontrole kořenové cesty zdrojů našeho Blueprintu. Přidejte test, abychom zjistili, zda má hodnotu nebo ne.
from app.hello2 import hello2 def test_rootpath(): assert hello2.root_path is not None
Nyní provedeme tyto testy spolu s dalšími testy, abychom se ujistili, že procházejí.
pytest -v
Uvidíte podobný výstup výsledků testu, jak je uvedeno níže.

Nyní odevzdejte všechny změny do repo a tyto změny publikujte ve vzdáleném úložišti na Githubu. Porovnejte rozdíly s kódem s kódem hlavní větve a vytvořte požadavek na vytažení, pokud nedojde ke konfliktům.
Požadavek na vyžádání vyvolá úlohy sestavení, které jsou součástí našeho pracovního postupu Github. Pokud všechny kontroly požadavků na stažení z tutoriálu-4 nezlyhají, můžeme tuto větev bezpečně sloučit s hlavní.

Často kladené otázky
Otázka č. 1) Co je to Flask BluePrint?
Odpovědět: Flask Blueprint je způsob, jak strukturovat aplikaci Flask na menší a opakovaně použitelné moduly. Flask Blueprint má své samostatné zdroje, jako jsou pohledy, šablony, statické soubory, modely, formuláře atd. Přístup Flask Blueprint používáme k vytváření snadno udržovatelných a škálovatelných aplikací Flask.
Otázka 2) Jak používáte Flask Blueprint?
Odpovědět: Chcete-li použít Flask Blueprint, musíme jej importovat a zaregistrovat pomocí objektu aplikace Flask pomocí metody app.register_blueprint. Můžeme předat hodnotu parametru url_prifix a předložit tak cestu k trasám Flask Blueprint.
Závěr
V tomto kurzu jsme vysvětlili Flask Blueprints spolu s koncepcemi vytváření statických prostředků pro aplikaci Flask. Zkoumali jsme výhody používání Flask Blueprint spolu s myšlenkami na zdroje plánu pomocí pluginu Flask s názvem Flask-Bootstrap.
Také jsme pokryli koncepty vytváření image Dockeru ukázkové aplikace Flask tutorial. Kromě toho jsme také vytvořili dva testy pro ověření Flask Blueprints.
V našem dalším kurzu se budeme zabývat běžně sledovanými vzory při vytváření funkcí ve webových aplikacích pomocí baňky.
=> Navštivte zde a naučíte se baňky od nuly
Doporučené čtení
- Výukový program pro flask API s příkladem | Rozšíření baňky pomocí API
- Top 31 populárních otázek na rozhovor s Python Flask s odpověďmi
- Uzel Django Vs Flask Vs: Který rámec vybrat
- Baňky návrhové vzory a osvědčené postupy pro webové aplikace
- (Top 10) Nejlepší softwarové platformy pro vývoj aplikací do roku 2021
- Top 51 Bootstrap Interview Otázky a odpovědi