<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.phobos-net.fr/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wiki.phobos-net.fr/feed.php">
        <title>wikinotes</title>
        <description></description>
        <link>https://wiki.phobos-net.fr/</link>
        <image rdf:resource="https://wiki.phobos-net.fr/lib/tpl/dokuwiki/images/favicon.ico" />
       <dc:date>2026-05-06T21:52:34+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/routage?rev=1775809342&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/templates?rev=1775801399&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/definir_commande_cli?rev=1775393751&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask_formulaires_wtforms?rev=1775989580&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/tests_unitaires_via_pytest?rev=1753628163&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/architecture_projet_flask?rev=1775376548&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/demarrer_application?rev=1753608365&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/transmettre_objets_python_au_javascript?rev=1732198017&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask-sqlalchemy/relation_agregation?rev=1753198299&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask-sqlalchemy/relation_composition?rev=1754250594&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask-sqlalchemy/relation_many-to-many?rev=1754432187&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask-sqlalchemy/relation_one-to-many?rev=1754217789&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/tutoriel/webstore?rev=1733180890&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.phobos-net.fr/doku.php/dev/python/flask/extensions/flask-sqlalchemy/afficher-les-requetes?rev=1756406120&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wiki.phobos-net.fr/lib/tpl/dokuwiki/images/favicon.ico">
        <title>wikinotes</title>
        <link>https://wiki.phobos-net.fr/</link>
        <url>https://wiki.phobos-net.fr/lib/tpl/dokuwiki/images/favicon.ico</url>
    </image>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/routage?rev=1775809342&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-10T08:22:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:routage</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/routage?rev=1775809342&amp;do=diff</link>
        <description>dev python flask routes

Flask : routage

A propos des routes

Définir une URL ayant un sens pour l&#039;utilisateur est préférable en général. Les deux URL ci-dessous peuvent produire le même résultat :

	*  &lt;https://www.example.com/script?action=33257&gt;
	*  &lt;https://www.example.com/create/user&gt;

Dans le second cas, on peut directement comprendre le sens de l&#039;action à la lecture de l&#039;</description>
    </item>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/templates?rev=1775801399&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-10T06:09:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:templates</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/templates?rev=1775801399&amp;do=diff</link>
        <description>dev python flask templates jinja2

Flask : Utilisation des templates

Généralités

Grossièrement, le template est une page web à trous. Il contient des sections invariantes en HTML/javascript directement interprétables par le navigateur web et des sections dynamiques ou non remplies désignées</description>
    </item>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/definir_commande_cli?rev=1775393751&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T12:55:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:definir_commande_cli</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/definir_commande_cli?rev=1775393751&amp;do=diff</link>
        <description>dev python flask cli commande

Flask : Définir une commande CLI

Le framework Flask s&#039;appuie sur le paquetage Python Click pour la gestion de la ligne de commande.

On utilise les décorateurs pour déclarer une commande. Ci-dessous un exemple simple de commande sans argument :


from flask import Flask

app = Flask(__name__)

@app.cli.command(&quot;version&quot;)
def version():
  &quot;&quot;&quot;Show application version.&quot;&quot;&quot; 
  print(&quot;0.0.1&quot;)</description>
    </item>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask_formulaires_wtforms?rev=1775989580&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-12T10:26:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:flask_formulaires_wtforms</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask_formulaires_wtforms?rev=1775989580&amp;do=diff</link>
        <description>dev python flask web formulaire

:TODO_DOCUPDATE:

Flask : Créer des formulaires via Flask-WTF

WTForms est une bibliothèque Python permettant de gérer des formulaires web via des Classes et objets en POO.

Ici on utilise le paquet Flask-WTF qui intègre la bibliothèque WTForms au micro framework Flask.</description>
    </item>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/tests_unitaires_via_pytest?rev=1753628163&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-07-27T14:56:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:tests_unitaires_via_pytest</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/tests_unitaires_via_pytest?rev=1753628163&amp;do=diff</link>
        <description>dev python test pytest

:TODO_DOCUPDATE:

Flask : tests unitaires avec pytest

Flask s&#039;appuie sur le framework pytest pour créer et exécuter les tests.

Nomenclature

Par défaut les tests sont regroupés dans le dossier ./tests du projet. Les tests sont des fonctions dont le nom commence par</description>
    </item>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/architecture_projet_flask?rev=1775376548&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T08:09:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:architecture_projet_flask</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/architecture_projet_flask?rev=1775376548&amp;do=diff</link>
        <description>dev python flask web api

Flask

:TODO_DOCUPDATE:

Flask n&#039;impose aucune arborescence, selon les besoins on peut opter pour une application monolithique ou modulaire.

Application monolithique

Pour les petit projets, les tests ou les tutoriaux, on utilise généralement un simple module Python qui se charge d&#039; instancier directement l&#039;objet Flask. Cette approche monolithique permet de coder rapidement une preuve de concept (PoC), un prototype par exemple.</description>
    </item>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/demarrer_application?rev=1753608365&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-07-27T09:26:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:demarrer_application</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/demarrer_application?rev=1753608365&amp;do=diff</link>
        <description>dev python framework flask

Flask : Démarrer l&#039;application depuis la CLI

La commande flask permet notamment d&#039;exécuter l&#039;application sur un serveur de développement intégré au framework ou de démarrer un shell interactif dans le contexte de l&#039;application.

Par défaut la commande tente d&#039;importer un module ou un paquetage nommé</description>
    </item>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/transmettre_objets_python_au_javascript?rev=1732198017&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-21T14:06:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:transmettre_objets_python_au_javascript</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/transmettre_objets_python_au_javascript?rev=1732198017&amp;do=diff</link>
        <description>dev python flask javascript

Flask : Transmettre des objets Python à un script Javascript du template

Depuis le contrôleur (la fonction associée à la route), on crée des objets Python qu&#039;on peut transmettre facilement au template.

Le template peut contenir du code javascript : il est parfois utile de pouvoir transmettre des objets au script afin de les exploiter côté client.</description>
    </item>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask-sqlalchemy/relation_agregation?rev=1753198299&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-07-22T15:31:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:flask-sqlalchemy:relation_agregation</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask-sqlalchemy/relation_agregation?rev=1753198299&amp;do=diff</link>
        <description>dev python sql sqlalchemy relation

Flask-SQLAlchemy : Définir une relation d&#039;agrégation

La relation d&#039;agrégation est une forme particulière de relation one-to-many. C&#039;est une composition sans appartenance : la suppression d&#039;une instance de la classe regroupant les agrégats n&#039;entraine pas la suppression des agrégats.</description>
    </item>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask-sqlalchemy/relation_composition?rev=1754250594&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-08-03T19:49:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:flask-sqlalchemy:relation_composition</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask-sqlalchemy/relation_composition?rev=1754250594&amp;do=diff</link>
        <description>dev python sql sqlalchemy relation

:TODO_DOCUPDATE:

Flask-SQLAlchemy : relation de composition

La relation de composition est une forme particulière de relation one-to-many. Le diagramme UML la représente comme ci-dessous :



	*  Une voiture (le composite) peut contenir un ou plusieurs sièges (les composants);</description>
    </item>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask-sqlalchemy/relation_many-to-many?rev=1754432187&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-08-05T22:16:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:flask-sqlalchemy:relation_many-to-many</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask-sqlalchemy/relation_many-to-many?rev=1754432187&amp;do=diff</link>
        <description>dev python flask orm db sqlalchemy

Flask-SQLAlchemy : Mise en œuvre d&#039;une relation many-to-many

:TODO:

Suppression des enregistrements orphelins dans une association many-to-many

Un cas typique est la gestion des étiquettes (tags) ou des mots-clés (keywords).

Dans cet exemple on souhaite pouvoir associer des mots-clés à des jeux :</description>
    </item>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask-sqlalchemy/relation_one-to-many?rev=1754217789&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-08-03T10:43:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:flask-sqlalchemy:relation_one-to-many</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/flask-sqlalchemy/relation_one-to-many?rev=1754217789&amp;do=diff</link>
        <description>dev python flask orm db sqlalchemy

:TODO_DOCUPDATE:

Flask-SQLAlchemy : relation one-to-many

Quelques notes à propos de l&#039;implémentation d&#039;une relation un à plusieurs (one to many) avec l&#039;extension Flask-SQLAlchemy.

Pour illustrer le concept on prend un exemple rudimentaire :


MCD via diagramme UML</description>
    </item>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/tutoriel/webstore?rev=1733180890&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-12-02T23:08:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:tutoriel:webstore</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/tutoriel/webstore?rev=1733180890&amp;do=diff</link>
        <description>dev python flask sqlalchemy tutoriel

Exemple d&#039;Application web avec Flask et le module flask_sqlalchemy

On crée une petite application web “webstore” qui stocke des articles dans différents magasins

Initialisation du projet, création d&#039;un dépôt et d&#039;un environnement virtuel


cd ~/dev
git init webstore

cd ~/dev/webstore
python3 -m venv .venv</description>
    </item>
    <item rdf:about="https://wiki.phobos-net.fr/doku.php/dev/python/flask/extensions/flask-sqlalchemy/afficher-les-requetes?rev=1756406120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-08-28T18:35:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:python:flask:extensions:flask-sqlalchemy:afficher-les-requetes</title>
        <link>https://wiki.phobos-net.fr/doku.php/dev/python/flask/extensions/flask-sqlalchemy/afficher-les-requetes?rev=1756406120&amp;do=diff</link>
        <description>dev python sql sqlalchemy

Afficher les requêtes produites par l&#039;ORM SQLAlchemy

La variable de configuration SQLALCHEMY_ECHO

Lorsqu&#039;on utilise l&#039;extension Flask-SQLAlchemy, on peut afficher un retour des requêtes produites par l&#039;ORM sur la console en utilisant la variable de configuration</description>
    </item>
</rdf:RDF>
