Comment utiliser les conditions ?

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

Dans les workflows

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 |date sur chacune des dates.
    Par exemple, pour vérifier que date1 est 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_days va 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_hours permet 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 !

Proposez une amélioration pour la documentation

Dernière mise à jour le 10/09/2026 10:36