Comment utiliser les conditions ?

Cette page est en cours de réécriture.

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 conditions sur les dates sont monnaie courante et assez spécifiques.

Si nous avons un champ 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 que :
    • L'année : today|date:"Y"
    • Le mois : today|date:"m"
    • Le jour : today|date:"d"
  • Pour vérifier qu'une date est postérieure à la date du jour on écrira form_var_date|date > today|date : cette condition sera vraie si la date de la variable est postérieure à la date du jour.

  • Pour vérifier qu'une date 1 est postérieure à une date 2 on écrira form_var_date1|date > form_var_date2|date : cette condition sera vraie si la date 1 est postérieure à la date 2.

  • |add_days va permettre de soustraire ou d'ajouter des jours à une date. Pour déclencher une action 2 jours avant une date particulière (vérifier qu'on est à deux jours ou moins d'une échéance), on écrira par exemple form_var_date|date|add_days:-2 >= today|date : cette condition deviendra vraie deux jours avant la date de la variable, elle sera fausse jusqu'à -2 jours avant la date de la variable.

  • Pour vérifier que la date se situe à plus de 30 jours avant la date du jour, on écrira form_var_date|date|add_days:30 <= today|date : cette condition sera vraie si la date de la variable est inférieure de 30 jours ou plus à la date du jour, fausse sinon.

  • Le même type de calcul est possible en se basant sur un délai lié à un nombre d'heures. On utilise alors form_var_date|add_hours:3 (on ajoute 3 heures à la date sélectionnée).

  • Pour contrôler l'âge d'un enfant lors d'une inscription. Par exemple, une inscription ouverte aux seuls enfants nés de 2014 à 2016 inclus. On utilisera alors cette condition : 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.

Conditionner la valeur d'une variable (if... else)

Prenons l'exemple d'une démarche que l'on peut faire pour soi ou pour le compte d'un tiers. On pose une question dont la réponse est stockée dans form_var_nature_demande (c'est soit «â€ŻMe concerne », soit «â€ŻConcerne quelqu'un d'autre »).

En fonction de la réponse, je veux stocker dans une donnée de traitement «â€ŻCommune » (form_var_commune),  la commune de la personne concernée (information demandée sur une page particulière) ou la commune du demandeur (demandée sur une autre page). Lorsque la demande est faite pour un tiers, il faut prendre la commune de la personne concernée, la commune du demandeur sinon. Pour modifier la valeur d'une donnée de traitement form_var_commune, on va écrire sous forme de gabarit Django :

{% if form_var_nature_demande == "concerne quelqu'un d'autre" %} {{form_var_commune_personne_concernee}}{% else %} {{form_var_commune_demandeur }}{% endif %}

Les champs d'un formulaire sont tous définis, même si l'usager n'est pas passé par la page contenant tel ou tel champ. Nos deux variables form_var_commune_personne_concernee et form_var_commune_demandeur existent donc toujours.

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 28/08/2026 15:39