Projet

Général

Profil

Development #16625

Avoir un templatetags |redressejson (pour la cellule JSON et clés JSON avec des - ou des espaces)

Ajouté par Thomas Noël il y a presque 7 ans. Mis à jour il y a plus de 4 ans.

Statut:
Nouveau
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
30 mai 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Quand la cellule JSON reçoit un JSON avec des clés comme "date-de-fin" (qui sont des clés normales en JSON), on ne peut pas les utiliser facilement dans le template ( {{json.data.date-de-fin}} est refusé).

Plusieurs solutions...

La moche avec laquelle je bidouille actuellement :

{% for k,v in qf.items %}
{% if k == 'date-fin-validite' %}
  <strong>{{v|strptime:"%Y-%m-%d"|date:"d F Y"}}</strong>
{% endif %}
{% endfor %}

D'autres :
  1. avoir un templatetag qui permette d'extraire un élément d'un dictionnaire : {% with date_de_fin=json.data|get:"date-fin-validite" %}...
  2. avoir un templatetag qui pythonise toutes les clés de tous les dicos d'un json {% with dico=json.data|pythonize %}... (nom à trouver)
  3. ou la même transformation en amont, dans la vue

Historique

#1

Mis à jour par Thomas Noël il y a presque 7 ans

Exemple de json qu'il faudrait à mon avis gérer :

{
  "mes voitures": [
     "modèle1": {
        "marque": "range rover",
        "annee-d-achat": 1998
     }
  ]
}

deviendrait :

{
  "mes_voitures": [
     "modele1": {
        "marque": "range rover",
        "annee_d_achat": 1998
     }
  ]
}

#2

Mis à jour par Thomas Noël il y a plus de 4 ans

Je viens de me faire embêter par un tel JSON.

#3

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

On pourrait aussi, quand c'est du code à nous en face, utiliser des underscores pour éviter à avoir rattraper les choses dans combo.

Formats disponibles : Atom PDF