e classe de modèle simple : ''Product''.
===== Installation =====
Création d'un environnement virtuel Python pour le projet Flask et installation des packages via pip :
<code bash>
#cr... thon3 -m venv .venv
source .venv/bin/activate
# Installation de Flask et de l'extension Flask-Migrate
pip install Flask Flask-SQLAlchemy Flask-Migrate
</code>
s en POO.
Ici on utilise le paquet Flask-WTF qui intègre la bibliothèque WTForms au micro framework Flask.
===== Initialiser l'application Flask =====
Création d'un dépôt git pour le projet et initialisation de l'application Flask :
<code bash>
git init hello-wtf
cd hello-wtf/
git branch -m main
# C
st une page web à trous. Il contient des sections invariantes en HTML/javascript directement interprétables par le navigateur web et des sections dynamiqu... HTML échappées) ;
* ''%%{% %}%%'' Code Python à interpréter ;
* ''%%{# #}%%'' Commentaires.
<co... _template
# ...
@app.route('/')
def supply_index() -> str:
msg = "Hello World !!!"
arger l'environnement virtuel Python du projet et installer le paquetage **Flask-Login** :
<code bash>
pip install Flask-Login
</code>
===== Création d'un Blu... ir -p auth/{templates,static,models}
touch auth/__init__.py
touch auth/models/__init__.py
</code>
Le dunder init du paquetage contient l'instanciation du
sition sans appartenance** : la suppression d'une instance de la classe regroupant les agrégats n'entr... ions dans le MLD est abordé dans le cours [[cours:informatique:dev:db:modeliser_bases_de_donnees:340_t... __tablename__ = 'warehouse'
id = db.Column(db.Integer, primary_key=True, index=True)
name = db.Column(db.String(80), unique=True, index=True)
être enregistrées dans un SGBD externe.
===== Installation =====
Pour pouvoir utiliser l'extension, installer le module **Flask-SQLAlchemy**
<code bash>
# Dans votre environnement virtuel
pip install Flask-SQLAlchemy
</code>
===== Options de c... e configuration ''SQLALCHEMY_DATABASE_URI'' comme indiqué ci-dessous :
<code python>
# Pour utiliser
' | (par défaut) tout texte sans "/" |
^ ''int'' | entiers positifs |... courant que les utilisateurs accèdent à des pages inexistantes : ce qui produit une erreur 404. Flask ... s le shell flask :
<code bash>
# Lancer le shell interactif Flask
flask shell
app.url_map
</code>
==... /stable/quickstart/#routing|Documentation Flask : introduction au routage (palletsprojects.com) (en)]]
i stocke des articles dans différents magasins
Initialisation du projet, création d'un dépôt et d'un environnement virtuel
<code bash>
cd ~/dev
git init webstore
cd ~/dev/webstore
python3 -m venv .ve...
</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
uméro de version du programme. On peut maintenant invoquer la commande depuis l'interpréteur :
<code bash>
flask version
</code>
===== Groupes de comma... def create_user(name):
"""Add an user with name in argument."""
click.echo(f"Add an user with name... def delete_user(name):
"""Remove user with name in argument."""
click.echo(f"Remove an user with n
ter l'application sur un serveur de développement intégré au framework ou de démarrer un shell interactif dans le contexte de l'application.
Par défaut l... in d'import ;
- Une dernière partie optionnelle indiquant le nom de l'instance de l'application Flask ou de l'application factory. Si le nom désigne une
la fonction ''redirect()''. Pour les redirections internes, on l'utilise conjointement à la fonction '... edirect('https://www.example.com')
# Redirection interne
@app.route('/test-perm-redirect')
def redire... ofile', user_id=110))
@app.route('/user/profile/<int:user_id>')
def show_user_profile(user_id: int) :
if not user_authenticaded():
return red