Les conditions permettent de rendre les formulaires, fiches et workflows dynamiques et interactifs. Elles évaluent une expression et déclenchent un comportement en fonction du résultat.
Fonctionnalités clés
Les conditions, écrites en syntaxe Django, sont des formules qui évaluent si une expression est vraie ou fausse. Elles permettent de :
-
afficher ou masquer un champ, une page, ou un bloc de champs ;
-
autoriser ou empêcher la sortie d'une page ou d'un bloc de champs ;
-
autoriser ou empêcher la validation d'une action formulaire dans un workflow ;
-
exécuter ou non une action dans un workflow.
Pour vérifier qu’une condition fonctionne, utilisez les outils de test dans les pages d’inspection des données.
Attention à ne pas confondre les conditions avec les gabarits. Une condition évalue une expression pour déterminer si elle est vraie ou fausse, tandis qu'un gabarit sert à produire du texte (avec des balises comme {% if %} ou des filtres).
Les deux utilisent toutefois une syntaxe proche et certains filtres peuvent être utilisés dans les deux cas.
Dans quel contexte utiliser des conditions ?
Dans les formulaires et les modèles de fiches
- Condition d'affichage, d'un champ ou d'une page ou d'un bloc de champs.
- Condition d'affichage d'un champ dans un bloc de champs.
- Condition de sortie de page.
- Condition de validation d'un bloc de champs.
Dans les workflows
- Condition d'exécution d'une action dans un workflow.
- Condition de validation d'une action formulaire dans un workflow.
Les exemples présentés dans cette page utilisent principalement des variables issues des formulaires, mais les conditions peuvent également utiliser d'autres variables disponibles dans Publik.
Écrire une condition simple
Variables issues des champs d'un formulaire
Les variables d'un formulaire sont construites à partir des identifiants attribués aux champs.
Par exemple, si un champ possède l'identifiant vehicule, sa variable sera : form_var_vehicule.
Attribuer un identifiant est indispensable lorsqu'un champ doit être utilisé dans une condition, par exemple pour conditionner l'affichage d'une page.
Les identifiants peuvent contenir des chiffres et des lettres, ainsi que le caractère _. Ils ne peuvent pas contenir d'autres caractères spéciaux.
Par exemple, les identifiants date_naissance et type_de_demande donneront respectivement comme variables : form_var_date_naissance et form_var_type_de_demande.
Syntaxe des conditions
Une condition compare généralement une variable avec une valeur. Par exemple :
form_var_vehicule == "Oui"
Cette condition est vraie lorsque la variable form_var_vehicule contient exactement la valeur «â€ŻOui ».
La casse est importante : les majuscules et les minuscules doivent être respectées, de la même manière que l'accentuation et les espaces.
Les principaux opérateurs
| Opérateur | Signification | Exemple |
|---|---|---|
| == | égal à | form_status == "Demande acceptée" |
| != | différent de | form_status != "Demande acceptée" |
| > | supérieur à | form_var_age > 18 |
| < | supérieur ou égal à | form_var_age < 18 |
| <= | inférieur ou égal à | form_var_age >= 18 |
| and | ET | form_var_telephone and form_var_courriel |
| or | OU | form_var_telephone or form_var_mobile |
| not | NON | not form_user |
| in | contient | "Paris" in form_var_commune |
| not in | ne contient pas | "Banane" not in form_var_fruits |
Les principaux filtres utiles dans les conditions
| Filtre | Utilisation | Exemple |
|---|---|---|
| |decimal | convertir en nombre | form_var_age|decimal >= 18 |
| |lower | convertir en minuscules | form_var_commune|lower |
| |date | manipuler une date | form_var_date|date |
| |add_days | ajouter/soustraire des jours | form_var_date|date|add_days:-2 |
| |add_hours | ajouter/soustraire des heures | form_var_date|add_hours:3 |
Syntaxe des conditions sur les autres types de champs
Case à cocher (choix unique)
Les champs de type Case à cocher prennent deux valeurs : «â€ŻTrue » lorsque la case est cochée et « False » lorsque la case n'est pas cochée.
Par exemple, lorsque l'identifiant du champ est vehicule, pour vérifier que la case est cochée, la condition s'écrira :
form_var_vehicule == "True"
Liste
Le filtre |splitpermet notamment de transformer une chaîne de valeurs séparées par des espaces en une liste utilisable avec in. Par exemple :
form_var_couleur in "Bleu Rose Vert"|split
La condition est vraie si la valeur de form_var_couleur est l'une des valeurs Bleu, Rose ou Vert.
Liste à choix multiple
Pour une liste à choix multiples contenant une liste simple de valeurs, la variable contient les valeurs sélectionnées sous forme de chaîne de caractères.
Par exemple, si le champ a pour identifiant foobar et que les valeurs «â€Żpomme » et «â€Żpoire » sont sélectionnées, la variable aura la valeur suivante : form_var_foobar : "pomme, poire"
On peut vérifier qu'une valeur a été sélectionnée avec in :
poire" in form_var_foobar
Pour vérifier qu'elle n'a pas été sélectionnée :
poire" not in form_var_foobar
On peut également vérifier que plusieurs valeurs ont été sélectionnées :
poire" in form_var_foobar and "pomme" in form_var_foobar
Ou qu'au moins l'une des deux valeurs a été sélectionnée :
poire" in form_var_foobar or "pomme" in form_var_foobar
De manière générale, les opérations possibles sur les ensembles peuvent également être réalisées en utilisant le type approprié (set). Cela permet parfois d'obtenir des expressions plus lisibles qu'une succession de and et de or.
Comparer des nombres
Les opérateurs de comparaison numériques sont :
- < : inférieur à ;
- > : supérieur à ;
- <= : inférieur ou égal à ;
- >= : supérieur ou égal à.
Pour utiliser ces opérateurs avec une variable contenant un nombre, il faut transformer cette variable en nombre à l'aide du filtre |decimal.
Par exemple, la condition ci-dessous est vraie à partir de deux réservations.
form_var_nombre_de_reservations|decimal > 1
Effectuer des calculs
Pour effectuer des calculs sur des variables, les filtres Django sont plus adaptés que les conditions elles-mêmes.
Consultez la documentation sur les filtres pour les opérations mathématiques.
Condition sur les dates
Les dates sont fréquemment utilisées dans les conditions, par exemple pour vérifier une échéance, comparer deux dates ou contrôler l’âge d’une personne.
En présence d'un champ de type date ayant comme identifiant «â€Żdate », nous utiliserons form_var_date|date pour obtenir une chaîne de caractère utilisable dans l'écriture des conditions. Par ailleurs la variable today est un objet date qui contient la date du jour. Il faudra lui aussi le transformer en une chaîne de caractère à l'aide du filtre |date pour l'exploiter dans l'écriture des conditions. Quelques exemples :
- On peut faire varier la façon dont une date va s'afficher grâce à des paramètres du filtre |date. Par exemple avec la variable today (qui contient la date du jour), on aura :
{{ today|date:"Y-m-d" }} --> affiche la date au format ISO, par exemple 2019-02-25
{{ today|date:"d/m/Y" }} --> affiche la date au format plus habituel 25/02/2019
- On pourra souhaiter ne récupérer qu'une partie d'une date :
- L'année : today|date:"Y"
- Le mois : today|date:"m"
- Le jour : today|date:"d"
-
Pour comparer deux dates on utilise le filtre
|datesur chacune des dates.
Par exemple, pour vérifier quedate1est postérieure àdate2:form_var_date1|date > form_var_date2|date
On peut également utiliser les opérateurs>=,<=,==ou!=selon le résultat attendu. -
|add_daysva permettre de soustraire ou d'ajouter un nombre de jours à une date. Cela permet notamment de vérifier une échéance. Par exemple, pour déclencher une action lorsque l’on se trouve dans les deux jours précédant une date :
form_var_date|date|add_days:-2 >= today|date
Pour vérifier qu’une date est antérieure d’au moins 30 jours à aujourd’hui :
form_var_date|date|add_days:30 <= today|date -
Pour ajouter ou soustraire des heures, le filtre
|add_hourspermet d’effectuer le même type de calcul avec des heures. Par exemple, pour ajouter 3 heures à la date sélectionnée :
form_var_date|add_hours:3. -
Pour contrôler une année de naissance, on peut utiliser des conditions pour vérifier qu’une personne appartient à une tranche d’âge donnée. Par exemple, pour autoriser uniquement les enfants nés entre 2014 et 2016 inclus, si le champ de date de naissance a pour identifiant
date_naissance:
form_var_date_naissance|date:"Y" >= 2014 and form_var_date_naissance|date:"Y" <= 2016
Pour plus d'informations sur les filtres date dans Publik consulter la section filtres sur les dates et pour creuser encore plus loin consulter la documentation Django pour une référence complète concernant l'utilisation du filtre date et du filtre time.
En pratique
Comment conditionner la valeur d'une variable ?
Il est possible de définir la valeur d'une variable différemment selon une condition, en utilisant la syntaxe if... else des gabarits Django.
Prenons l'exemple d'une démarche qui peut être effectuée pour soi-même ou pour le compte d'un tiers.
Une question permet de déterminer la nature de la demande. Sa réponse est stockée dans form_var_nature_demande et peut prendre deux valeurs : « Me concerne » et « Concerne quelqu'un d'autre ».
On souhaite ensuite renseigner une donnée de traitement « Commune » form_var_dt_commune avec la commune de la personne concernée.
Si la demande concerne un tiers, on utilise la commune de la personne concernée qui a pour identifiant dans le formulaire : form_var_commune_personne_concernee.
Sinon, on utilise la commune du demandeur : form_var_commune_demandeur.
Pour modifier la valeur d'une donnée de traitement, on peut utiliser le gabarit Django suivant :
{% if form_var_nature_demande == "concerne quelqu'un d'autre" %}
{{ form_var_commune_personne_concernee }}
{% else %}
{{ form_var_commune_demandeur }}
{% endif %}
Vous n'avez pas trouvé ce que vous cherchez ?
Une suggestion ? Écrivez-nous !
Dernière mise à jour le 10/09/2026 10:36