Intermédiaire
Exercices
Exercice A — session_state : filtres persistants
Exercice : Filtres persistants entre pages
Reprendre le dashboard multi-pages de la séance 2. Ajouter la persistance des filtres (région et année) entre les pages en utilisant key sur les widgets de la sidebar.
Étapes :
- Sur la page "Ventes", ajouter un
st.sidebar.selectboxpour la région et unst.sidebar.sliderpour l'année, avec le paramètrekeysur chaque widget - Initialiser les clés correspondantes dans
st.session_stateen début de script - Sur la page "Statistiques", lire les valeurs depuis
st.session_statepour filtrer les données affichées - Vérifier que naviguer de "Ventes" à "Statistiques" et revenir conserve bien les filtres choisis
Critères de validation :
- Les filtres persistent quand on change de page
- Les valeurs par défaut sont correctes au premier chargement
- Aucun
KeyErrorau premier lancement
Exercice B — session_state : sélection croisée
Exercice : Sélection croisée entre graphiques
Sur la page principale du dashboard, ajouter une interaction croisée entre un graphique et un tableau de détail.
Étapes :
- Afficher un bar chart du chiffre d'affaires par région avec
st.plotly_chart()eton_select="rerun" - Quand une barre est cliquée, stocker le nom de la région dans
st.session_state["region_cliquee"] - Sous le graphique, afficher un tableau de détail (
st.dataframe) filtré sur la région sélectionnée - Ajouter un bouton "Réinitialiser la sélection" qui remet
st.session_state["region_cliquee"]àNone - Quand aucune région n'est sélectionnée, afficher un message
st.infoinvitant à cliquer sur le graphique
Critères de validation :
- Le clic sur une barre filtre le tableau de détail
- Le bouton de réinitialisation fonctionne
- Le message d'information s'affiche quand aucune région n'est sélectionnée
- La sélection persiste entre les re-runs (pas seulement entre les clics sur le graphique)
Exercice C — structure de projet
Exercice : Réorganiser le projet
Réorganiser le projet selon la structure de référence vue dans cette séance.
Étapes :
- Créer les dossiers
api/etdashboard/avec leurs__init__.py - Déplacer les fichiers existants dans la bonne arborescence (voir la structure de référence)
- Créer le
requirements.txtavecpip freeze(dans un environnement virtuel) - Créer le
.gitignoreadapté au projet (voir le modèle de cette séance) - Créer le
.env.exampleavec les clés sans valeurs - Écrire un
README.mdminimal avec les instructions d'installation et de lancement
Critères de validation :
- Le projet se lance toujours correctement après la réorganisation
requirements.txtne contient que les dépendances du projet (pas tout le système).gitignoreexclut.env,secrets.toml,venv/,__pycache__/.env.examplecontient toutes les clés nécessaires sans valeur secrète- Le
README.mdpermet à quelqu'un d'autre de lancer le projet
Exercice D — déploiement (bonus)
Exercice : Déployer sur Streamlit Community Cloud
Déployer le dashboard sur Streamlit Community Cloud en suivant les étapes de la section 3.
Étapes :
- Créer un dépôt GitHub pour le projet (public ou privé)
- S'assurer que
.gitignoreexclut.envetsecrets.toml - Pousser le code sur GitHub (
git push) - Connecter le dépôt à Streamlit Community Cloud sur share.streamlit.io
- Configurer les secrets dans l'interface web (section "Advanced settings" puis "Secrets")
- Vérifier que l'application est accessible sur l'URL publique générée
Critères de validation :
- L'application est accessible sur une URL
*.streamlit.app - Les secrets ne sont pas visibles dans le code source sur GitHub
- L'application affiche correctement les données
- Un nouveau
git pushdéclenche bien un redéploiement automatique