Projet

Général

Profil

Documentation #22595

documentation, templates django vs None

Ajouté par Frédéric Péters il y a environ 6 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
17 mars 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non
Club:
Non

Description

Aujourd'hui un champ laissé vide dans un formulaire dans w.c.s. va produire une variable dont le contenu sera None.

Mais souvent un template va simplement faire {{form_var_whatever}} et le résultat c'est que pour une variable définie à None, ça affichera None. Alors qu'il était plutôt attendu une chaine vide.

Pour obtenir une chaine vide, il faut {{form_var_whatever|default:""}}


Demandes liées

Lié à Publik - Documentation #26114: Documenter les filtres Django disponiblesNouveau05 septembre 2018

Actions

Historique

#1

Mis à jour par Frédéric Péters il y a environ 6 ans

Alternativement bien sûr, faire en sorte que w.c.s. fournisse des chaines vides plutôt que None; le gros travail alors sera de mesurer les implications, le patch minimal ressemblant sans doute à ça :

+++ b/wcs/formdata.py
@@ -115,7 +115,7 @@ def get_json_dict(fields, data, include_files=True, anonymise=False):
             if value and hasattr(field, 'get_json_value'):
                 value = field.get_json_value(value)
         else:
-            value = display_value = None
+            value = display_value = ''
         if field.store_display_value:
             new_data[field.varname + '_raw'] = value
             new_data[field.varname] = data.get('%s_display' % field.id)
#2

Mis à jour par Thomas Noël il y a environ 6 ans

A priori je suis pas chaud : on a des None dans les form_var_foobar utilisés dans les expressions Python (conditions et autres). Avoir d'autres valeurs dans les expressions Django, ça ne me semble pas sain.

#3

Mis à jour par Benjamin Dauvergne il y a environ 6 ans

Un autre possibilité ce serait de normaliser ça uniquement pour les templates Django, on fait None => '' avant de passer ça à Template().render().

#4

Mis à jour par Thomas Noël il y a environ 6 ans

Benjamin Dauvergne a écrit :

Un autre possibilité ce serait de normaliser ça uniquement pour les templates Django, on fait None => '' avant de passer ça à Template().render().

Ouaip, mais dans les templates Django il y a aussi des conditions, on va y perdre la notion de None. Peut-être que ça sert pas... j'ai quand même des doutes.

#5

Mis à jour par Benjamin Dauvergne il y a environ 6 ans

Sûr.

#6

Mis à jour par Frédéric Péters il y a environ 6 ans

Dans la description, j'écrivais {{form_var_whatever|default:""}} mais pour ne rien introduire de nouveau, juste {% if form_var_whatever %}{{ form_var_whatever }}{% endif %} bien sûr fonctionne.

#7

Mis à jour par Brice Mallet il y a plus de 5 ans

#8

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Statut changé de Nouveau à Fermé
  • Planning mis à Non
  • Club mis à Non

On ne va rien changer ici.

Formats disponibles : Atom PDF