et Flask et installation des packages via pip :
<code bash>
#création d'un répertoire dédié à l'applica... ip install Flask Flask-SQLAlchemy Flask-Migrate
</code>
===== Création de l'application Flask =====
C... lication Flask dans le module Python ''app.py''
<code python app.py>
from flask import Flask
from flask... ef index():
return "<h1>Hello, World!</h1>"
</code>
Le module Python app.py définit la classe ''Pro
la définition ayant présenté la problématique :
<code python [enable_line_numbers="true", highlight_lin... """Constructeur """
self.label = label
</code>
La classe ''Category'' utilise un modèle(patter... xistant dans la table(relation) **categories**.
<code python>
>>> # Depuis flask shell
>>> db.create_al... a fonctionné sans lever d'exception
>>> quit()
</code>
via le client **sqlite3** en ligne de commande,
jet et installer le paquetage **Flask-Login** :
<code bash>
pip install Flask-Login
</code>
===== Création d'un Blueprint =====
On va s'appuyer sur le syst... ilement réimportés dans un autre projet Flask.
<code bash>
# Création du paquetage Python pour le Blue... auth/__init__.py
touch auth/models/__init__.py
</code>
Le dunder init du paquetage contient l'instanci
nsion, installer le module **Flask-SQLAlchemy**
<code bash>
# Dans votre environnement virtuel
pip install Flask-SQLAlchemy
</code>
===== Options de configuration =====
Lors de l... CHEMY_DATABASE_URI'' comme indiqué ci-dessous :
<code python>
# Pour utiliser une base SQLite en mémoir... config["SQLALCHEMY_DATABASE_URI"] = 'sqlite://'
</code>
Il peut être également utile d' [[dev:python:
ept de **fixtures** pour désigner des éléments de code pouvant être réutilisés entre les tests. Ces fixt... fixtures dans le module ''tests/conftest.py''.
<code python conftest.py>
# tests/conftest.py
import p... i_runner(app):
return app.test_cli_runner()
</code>
Dans cet exemple 3 fixtures sont crées ''app'',... ce de tests, on se place à la racine du projet :
<code bash>
python -m pytest
</code>
===== Envoyer des
réation d'un dépôt et d'un environnement virtuel
<code bash>
cd ~/dev
git init webstore
cd ~/dev/webstore
python3 -m venv .venv
</code>
On active l'environnement virtuel et on installe les modules flask et flask_sqlalchemy
<code bash>
source .venv/bin/activate
pip install Flask Flask-SQLAlchemy
</code>
===== Hello =====
Par défaut Flask lance l'ap
application Flask depuis la ligne de commande :
<code bash>
# Affiche les route de l'application "fairymaps"
flask --app fairymaps routes
</code>
Pour afficher les route depuis le shell flask
<code bash>
flask shell
app.url_map
</code>
===== FQDN =====
La variable **SERVER_NAME** permet de définir
ers).
Héritage : Le document de base contient du code HTML pouvant être partagé par d'autres pages (fac... fonction nommée par exemple ''new_universe'' :
<code python>
@app.route('/create/universe', methods=['... niverse():
if request.method == 'POST':
...
</code>
Cette fonction est associée à la route ''/creat... créer le lien vers cette page on peut produire le code suivant :
<code html>
...
<a href="{{ url_for('
bjet Flask. Cette approche monolithique permet de coder rapidement une preuve de concept (PoC), un proto... lithique deviendrait difficilement maintenable.
<code>
/home/user/Projects/aAppProject
├── myapp/ ... #
├── install
└── MANIFEST.in
</code>
Pour lancer l'application :
<code bash>
cd /home/user/Projects/aAppProject
flask --app myapp run --d
aquetage python-dotenv)
===== Exemples =====
<code bash>
flask --app src/gcomp run
</code>
Change le répertoire de travail (entre dans le dossier ''src'') puis charge le module ou paquetage ''gcomp''
<code bash>
flask --app 'gcomp:create_app("dev")' shell
</code>
Importe le module ou paquetage gcomp puis utili
le. Depuis votre environnement virtuel Python :
<code bash>
pip install Flask Flask-Maintenance
</code>
<note warning>
Au moment de l'écriture de cette note... section sources proposées ci-dessous.
</note>
<code python app.py>
"""
Application Flask monolithique... e):
return render_template('503.html'), 503
</code>
Pour activer/désactiver le mode maintenance on
x classes du modèle et la relation one-to-many.
<code python app.py [enable_line_numbers=“true”]>
from ... l'intermédiaire de l'extension
db.init_app(app)
</code>
* Lignes 7 et 25 : les classes doivent héri... lancer l'application flask en mode interactif :
<code bash>
flask shell
</code>
<code python>
>>> # Afficher les références
>>> dir()
>>> # Création de la
re du projet, on peut créer un module configs.py
<code python configs.py>
class DefaultConfig:
DEBUG =... TestingConfig(DefaultConfig):
TESTING = True
</code>
On peut ensuite facilement importer et utilis... ses dans l'application factory ou le shell flask
<code python>
</code>
===== Références =====
* [[https://runebook.dev/en/articles/flask/api/index/flask.C
éfinir via la variable **MAX_CONTENT_LENGTH** :
<code python>
# Valeur en Octets
# Ici les fichiers tra... config['MAX_CONTENT_LENGTH'] = 16 * 1000 * 1000
</code>
Dans le cas contraire l'exception **RequestEnti... rs le dossier ou seront téléverser les fichiers
<code python>
app.config['UPLOAD_FOLDER'] = '/uploads'
</code>
===== Références =====
* [[https://flask.pa