flask app flask project layout with blueprint bootstrap
Deze tutorial legt uit hoe je Flask App, Flask Blueprint en Flask Bootstrap in een Flask-project kunt gebruiken:
In dit onderwerp zullen we een beetje afwijken van het archetype van Flask-Appbuilder om ons begrip van Flask Blueprints te vergroten. Lees onze tutorial over Flask, Flask Templates & Views en Flask met databases zoals MongoDB, SQLite en MySQL. We hebben een voorbeeldproject gebruikt genaamd flaskTutorialApp.
U kunt het project echter ook helemaal opnieuw maken met de opdracht flask fab create-app. Deze opdracht maakt de steiger die nodig is voor een Flask-project samen met een applicatiedirectory op basis van de door u opgegeven applicatienaam.
Zie The Flask Training Series For All
In deze tutorial leggen we uit over Flask App, Flask Blueprint en Flask Bootstrap. We ontwikkelen onze Flask-app in eerste instantie met de reeds bestaande steigers van Flask-Appbuilder. Vervolgens maken we een Flask Blueprint genaamd hello2. Ten slotte zullen we het Flask Docker-concept beschrijven door onze Flask-app te koppelen.
Wat je leert:
Kolf App
Flask App is een andere naam voor een Flask-applicatie. Als u de code ziet die is geschreven in het bestand __init__.py, zult u merken dat er een instantie van Flask is gemaakt en dat de variabele de naam app heeft. De instantie van de klasse Flask is de Flask Application, de instantie van WSGI-toepassing.
Kolf blauwdruk
Flask Blueprint stelt ons in staat gerelateerde functies bij elkaar te houden en helpt bij betere ontwikkelingspraktijken. Enkele van de voordelen van Flask Blueprints zijn als volgt:
- Eenvoudige organisatie van grootschalige applicaties.
- Vergroot de herbruikbaarheid van code door dezelfde Blueprint meerdere keren te registreren.
- Een reeks bewerkingen wordt opgenomen en kan vervolgens opnieuw worden afgespeeld nadat een blauwdruk is geregistreerd.
Met de bovenstaande achtergrond gegeven op Flask Blueprint, kunnen we verder gaan en onze eerste Blueprint ontwerpen. We kunnen Blueprint ook als een module beschouwen. Laten we een HelloWorld-blauwdruk maken.
Alle componenten, bronnen en functies van een blauwdruk worden apart gehouden en georganiseerd van de andere broncode van de Flask-applicatie. Het betekent dat een Flask Blueprint zijn weergaven, formulieren, modellen, statische bestanden en sjablonen kan hebben.
U kunt meerdere blauwdrukken maken op basis van dezelfde set bronnen. Dat zal echter waarschijnlijk tot verwarring leiden en is geen goede gewoonte.
big data als servicebedrijven
Maak Flask Blueprint-bestanden en -mappen
Laten we beginnen met het maken van een Flask Blueprint met de naam hallo2. Gebruik het onderstaande script om de directorystructuur te maken nadat u uw virtuele omgeving hebt geactiveerd door de bron venv / bin / Activate te gebruiken nadat u naar de applicatiedirectory bent gegaan.
We willen dat onze hello2 Blueprint zijn weergaven heeft die we zullen importeren in zijn __init__.py. We maken een aparte map voor onze Blueprint met sjablonen en statische mappen om respectievelijk Flask-weergaven weer te geven en statische bronnen te bedienen.
Flask Blueprint Directory-structuur
De directorystructuur voor de blauwdruk moet er als volgt uitzien. Gebruik de tree-opdracht om een vergelijkbare uitvoer te maken.
Laten we nu een eenvoudige weergave binnen views.py definiëren. Open hello2 / views.py en voer het onderstaande codefragment in.
We importeren de Blueprint-klasse en de render_template-methode. Vervolgens maken we een Blueprint-object door de namen van de sjabloon en statische mappen op te geven.
Vervolgens definiëren we een route met behulp van de decorateur @ hello2.route en een controller met de naam hello2_view. Deze controller is een Python-functie. In deze functie wijzen we een waarde toe aan een variabele met de naam begroeting en geven deze vervolgens door aan de render_template-methode.
Maak een kolfblauwdruksjabloon
Laten we nu de sjabloon hello.html maken. Als je onze vorige tutorials hebt gelezen, dan moet je hebben gemerkt dat de sjabloon dezelfde naam heeft als die we hebben gemaakt voor het weergeven van de HelloWorld-weergave. Voor deze hello2 Blueprint maken we een nieuwe template door de vorige uit te breiden.
Merk verder op dat we een pad semantisch hello2 / hello.html hebben gebruikt bij het aanroepen van render_template om begroeting in het sjabloon weer te geven. Dit patroon voorkomt conflicten tussen de sjablonen met dezelfde naam.
Gebruik het onderstaande codefragment om hello.html te maken en het op te slaan onder hello2 / templates / hello2 / path.
Deze sjabloon lijkt bijna op de hello.html. Het erft echter de meeste HTML-delen van hello.html. Let op het gebruik van {% block hello%} en {% endblock%}. Blokkeer hallo in hello2 / hello.html heft het blok hallo op van het basissjabloon hello.html.
Laten we nu het __init__.py-bestand van de hello2 Blueprint openen en de onderstaande code erin vermelden.
In deze verklaring importeren we alle versierde methoden die we hebben gemaakt in views.py van de hello2 Blueprint. Indien gewenst kunnen we alleen die methodes / controllers importeren die klaar zijn om gebruikt of getest te worden.
Registreer een Flask Blueprint met Flask App
Laten we nu __init__.py openen onder de Flask-toepassingsdirectory en onze hello2 Blueprint registreren zoals weergegeven in de onderstaande code.
Merk ook hier op dat we selectief weergaven kunnen importeren en alleen die kunnen registreren die klaar zijn voor gebruik of testen.
Laten we onze Flask-app in de foutopsporingsmodus uitvoeren met het commando python run.py vanuit de hoofdmap van het project en naar http: // localhost: 8080 / hello2 navigeren om te zien of de weergave van hello2 goed werkt.
Het resultaat in de browser zou vergelijkbaar moeten zijn met het onderstaande voorbeeld.

Laten we werken aan een betere presentatie van de hello2-blauwdruk door het bootstrap-framework van Twitter te gebruiken. Bovendien leert u in de volgende sectie meer over de optionele parameters om het gedrag van een Flask Blueprint te veranderen. Laten we het eens bekijken met behulp van een voorbeeld van een Flask Blueprint genaamd Flask Bootstrap.
Toepassingsvoorbeeld modulaire kolf met blauwdruk voor kolf
Laten we op basis van onze kennis van hello2 Flask Blueprint nog wat blauwdrukken toevoegen om te begrijpen hoe we modulaire applicaties in Flask kunnen maken.
Laten we aannemen dat we een webtoepassing hebben die inhoud aan bezoekers biedt in de vorm van e-boeken, tutorials en cursussen. Het bevat ook wat aanvullende inhoud met betrekking tot informatie over het team en een homepage.
Als we proberen om deze nieuwe functies in de bestaande applicatie onder te brengen, dan zullen we views moeten maken in views.py en de bijbehorende sjablonen onder de applicatie-sjabloondirectory. Evenzo moeten we modellen en formulieren maken in models.py en forms.py.
Het onderhouden van alle applicatiecode wordt echter omslachtig, en de samenwerking met de andere teamleden zal te gecompliceerd zijn en kan leiden tot plegconflicten of een complexe ontwikkelingsworkflow.
Momenteel is bij deze conventionele benadering de applicatiestructuur zoals hieronder weergegeven.
Om een dergelijk scenario te vermijden, kunnen we gebruik maken van Flask Blueprints om modules te maken die specifiek zijn voor de functies en respectieve inhoud. Laten we een paar Flask Blueprints maken, met hun afzonderlijke bronnen.
beste plaatsen om gratis anime te kijken
Elk van de Flask Blueprint-lay-outs ziet er ongeveer hetzelfde uit als hieronder.
Gebruik het onderstaande script om de vereiste bestanden en mappen voor de geplande Flask Blueprints te maken. Voer dit script uit vanuit de hoofdmap van het project.
Laten we eerst functies maken voor de thuismodule.
Open views.py onder de homedirectory en werk deze bij met de onderstaande code.
In dit bestand hebben we de Blueprint-klasse van Flask geïmporteerd en deze geïnstantieerd met de vereiste parameters met afzonderlijke sjablonen en een statische map. Vervolgens gebruiken we @home decoration om de bijbehorende route van de view-methode genaamd index te declareren.
Maak nu een base.html Jinja2-sjabloon onder de sjabloondirectory van de app. Gebruik de onderstaande code om het bestand bij te werken.
We zijn uitgebreid vanaf Bootstrap's base.html. Let op het gebruik van div van de class container en hero-unit. Bovendien hebben we een knop gemaakt voor gebruikers om meer te leren. We hebben deze HTML aangepast en klassen uit het Bootstrap-framework van Twitter gebruikt.
Vernieuw nu de pagina in de browser op http: // localhost: 8080 / hello2.html om het gewijzigde uiterlijk van hello2.html te zien.
De weergave van Changed Hello2 zal er ongeveer zo uitzien als hieronder.

Het gebruik van Flask-Bootstrap is volledig afhankelijk van de blokken die beschikbaar zijn voor overschrijving of wijziging. We kunnen de onderstaande blokken gebruiken om de ervaring aan te passen. Een gedetailleerde lijst van alle mogelijke blokken is te zien op https://pythonhosted.org/Flask-Bootstrap/basic-usage.html.
Soms, als we gewoon een blok willen wijzigen in plaats van het volledig te vervangen, kunnen we de super () -functie van Jinja2 gebruiken om de resultaten te bereiken.
Maak een bestand met de naam hello2.css onder hello2 / static en plaats het onderstaande codefragment om de kleur van de alinea in hello2 / hello.html op te maken.
Neem het onderstaande codefragment en plaats het in hello2 / hello.html.
Open nu views.py van de Flask Blueprint hello2 en pas de blueprint-instructie aan zoals hieronder weergegeven.
Navigeer opnieuw naar de geregistreerde URL van de Flask Blueprint, d.w.z. http: // localhost: 8080 / hello2. Het resultaat vanwege de wijzigingen die tot dusver zijn aangebracht, zou er als volgt uit moeten zien.

Fles Docker
Docker helpt bij het containeriseren van een applicatie. Het isoleert de omgeving die de Flask-applicatie nodig heeft op een manier dat er geen behoefte is aan complete gevirtualiseerde omgevingen zoals virtuele machines.
Bovendien hebben docker-containers een minimale footprint en zijn ze gemakkelijker te beheren en te schalen met behulp van een orkestratieplatform. Tegenwoordig, wanneer elke andere applicatie ook een containerimplementatie heeft, moeten ook wij leren onze voorbeeldapplicatie in te zetten als een docker-container.
Een op Linux gebaseerde container kan op Windows en een MAC draaien. Een dockerized Flask-app is dus inzetbaar op elk besturingssysteem, ongeacht het besturingssysteem waarin deze is gebouwd.
In dit gedeelte leggen we de stappen uit van het koppelen van een Flask-app. We zullen dit project koppelen zodat het kan worden geïmplementeerd in een container met alle afhankelijkheden erin verpakt.
Eerste, Installeer Docker op uw machine.
sudo apt-get install docker.io
Zodra de installatie is voltooid, gaat u naar de hoofdmap van ons voorbeeldproject en maakt u een Dockerfile.
Schrijf de onderstaande code in dat Dockerfile.
Werk het config.py-bestand bij en verander de database in SQLite, zoals hieronder weergegeven.
Bovendien, als dit de eerste keer is dat u met de SQLite werkt in deze tutorialserie, maak dan de admin-gebruiker aan met behulp van het flask fab create-admin commando.
Controleer of de Admin-gebruiker kan inloggen op de applicatie.
hoe u een kopie van een array maakt
Bouw nu de docker-afbeelding van onze voorbeeldtoepassing met behulp van de onderstaande opdracht.
Deze opdracht kost enige tijd omdat het bronnen downloadt van de docker-hub. Zodra deze opdracht is voltooid, controleert u of de afbeeldingen zijn verschenen door de onderstaande opdracht te gebruiken.
Voer nu deze recent gemaakte Docker-afbeelding uit.
De console toont de logboekberichten van de ontwikkelingsserver.
Installatie van Docker resulteert in het creëren van een virtuele NIC met de naam docker0. Zoek het IP-adres met de opdracht sudo ifconfig. Zodra u het IP-adres van Docker heeft, kunt u de applicatie openen door naar de onderstaande URL te navigeren.
http: //: 5001
Als u eenmaal zeker bent van de ontwikkeling van de applicatie, kunt u uw Docker-image naar de Docker Hub implementeren zodat anderen deze kunnen downloaden en gebruiken.
De blauwdruk van de kolf testen
Laten we nu een paar tests maken om de blauwdruk hello2 te testen. Laten we eens kijken of onze voorbeeld-app de juiste HTTP-code retourneert wanneer de klant een Get-verzoek voor bronnen op / hello2-eindpunt verzendt of niet. Als je het je herinnert, hebben we onze Flask Blueprint hello2 geregistreerd met een url_prefix met de waarde als / hello2.
Maak een bestand met de naam test_blueprint.py onder tests en voeg de volgende test eraan toe.
HTTP 308 heeft betrekking op permanente omleiding en er wordt verwacht dat onze Flask-app het verzoek moet omleiden naar de bronnen met betrekking tot de blauwdruk met de naam hello2.
Laten we nu nog een test toevoegen om het rootpath van de bronnen van onze blauwdruk te controleren. Laten we een test toevoegen om te zien of het een waarde heeft of niet.
Laten we deze tests nu samen met de andere tests uitvoeren om er zeker van te zijn dat ze slagen.
U zou een vergelijkbare output van de testresultaten zien, zoals hieronder weergegeven.

Voer nu alle wijzigingen door in de repository en publiceer die wijzigingen naar de externe repository op Github. Vergelijk de verschillen met de code met die van de master branch en maak een pull request als er geen conflicten zijn.
Het pull-verzoek roept de build-taken op die deel uitmaken van onze Github-workflow. Als alle controles voor de pull-verzoeken van tutorial-4 niet mislukken, kunnen we deze branch veilig samenvoegen met de master.

Veel Gestelde Vragen
V # 1) Wat is Flask BluePrint?
Antwoord: Flask Blueprint is een manier om een Flask-applicatie te structureren in kleinere en herbruikbare modules. Een Flask Blueprint heeft zijn afzonderlijke bronnen, zoals views, sjablonen, statische bestanden, modellen, formulieren, enz. We gebruiken de Flask Blueprint-benadering om gemakkelijk te onderhouden en schaalbare Flask-applicaties te maken.
Vraag 2) Hoe gebruik je Flask Blueprint?
Antwoord: Om Flask Blueprint te gebruiken, moeten we het importeren en registreren met het Flask Application-object, met behulp van de app.register_blueprint-methode. We kunnen een waarde doorgeven aan de parameter url_prifix om een pad naar de routes van de Flask Blueprint te laten voorafgaan.
Gevolgtrekking
In deze zelfstudie hebben we Flask Blueprints uitgelegd, samen met concepten voor het maken van statische bronnen voor een Flask-app. We hebben de voordelen van het gebruik van Flask Blueprint samen met de gedachten van blauwdrukbronnen onderzocht met behulp van een Flask-plug-in genaamd Flask-Bootstrap.
We hebben ook de concepten besproken van het maken van de Docker-afbeelding van de voorbeeldtoepassing voor Flask-zelfstudie. Bovendien hebben we ook twee tests gemaakt om de Flask Blueprints te valideren.
In onze volgende tutorial zullen we de vaak gevolgde patronen behandelen bij het bouwen van functies in de webapplicaties met Flask.
Bezoek hier om Flask From Scratch te leren
Aanbevolen literatuur
- Flask API-zelfstudie met voorbeeld | Kolf uitbreiden met API's
- Top 31 populaire Python Flask-interviewvragen met antwoorden
- Django Vs Flask Vs Node: welk framework te selecteren
- Flask Design Patterns en best practices voor webapplicaties
- (Top 10) Beste softwareplatforms voor app-ontwikkeling van 2021
- Top 51 Bootstrap-interviewvragen en antwoorden