Documentation #22595
documentation, templates django vs None
0%
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
Historique
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)
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.
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()
.
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.
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.
Mis à jour par Brice Mallet il y a plus de 5 ans
- Lié à Documentation #26114: Documenter les filtres Django disponibles ajouté
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.