Django-fr

Forum

  • Accueil
  • » Django-fr
  • » [Résolu] Rendre un objet standard sérializable au yeux de Django

#1 15-03-2015 20:47:16

Drife
Membre
Inscription : 15-03-2015
Messages : 8

[Résolu] Rendre un objet standard sérializable au yeux de Django

Bonjour,

J'ai un problème très simple.
J'ai créé un objet spécial dont tout le contenu repose sur un banal dictionnaire.

J'aimerais stocker cet objet en session, et utiliser le serializeur "JSON" plus sécurisé que le serializeur "Pickle" (j'utilise aussi le session engine "signed cookies").

Le problème, c'est qu'aux yeux de Django mon objet maison n'est pas sérializable, donc tout plante :'(.

Quelqu'un saurait comment faire pour render mon objet sérialisable ? Quelle méthode implémenter ?
Il suffirait que je renvoit le dictionnaire...

D'avance merci.

PS: je précise que j'ai ratissé le net quelques heures avant de poster. On trouve facilement comment serialiser un objet, mais pas la réponse à ma question...

Dernière modification par Drife (23-03-2015 13:16:21)

Hors ligne

#2 16-03-2015 13:41:16

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : [Résolu] Rendre un objet standard sérializable au yeux de Django

Bonjour,

Il semble qu'il faille modifier la classe qui s'occupe de la serialization:
https://docs.djangoproject.com/fr/1.7/t … serializer

Hors ligne

#3 17-03-2015 18:30:01

Drife
Membre
Inscription : 15-03-2015
Messages : 8

Re : [Résolu] Rendre un objet standard sérializable au yeux de Django

Bonjour,

Pour être honnête, j'ai lu ce paragraphe mais i ne m'a pas trop aidé...
Au bout de la 5ème relecture, moi j'ai compris  "c'est compliqué, démerdez-vous" :-D.

Personne n'a jamais fait ce que je cherche à faire ici ??
Vu le comportement de Djangov 1.6, je pense que je ne suis pas le seul à avoir le problème !!

D'avance merci.

Hors ligne

#4 19-03-2015 10:02:07

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : [Résolu] Rendre un objet standard sérializable au yeux de Django

J'ai bien peur que ce soit le cas.
Pickle permet d'aller plus loin, mais c'est aussi ce que le rend vulnérable.
Pour JSON, le dumps / loads te permet de mettre en forme tes données avant la sérialization.
L'autre alternative est de rechercher pourquoi ton objet n'est pas serializable via JSON et de le mettre en ordre de marche.

Hors ligne

#5 19-03-2015 13:50:46

Drife
Membre
Inscription : 15-03-2015
Messages : 8

Re : [Résolu] Rendre un objet standard sérializable au yeux de Django

Bonjour,

Alors juste pour qu'on soit sûr d'être sur la même longueur d'onde, voici mon objet:

class MonObjet:
    mes_donnees = dict()
   
    #Pleins de fonctions
      ...

     # Supposons que la méthode à implémenter soit to_json, mais c'est ma question du topic
     def to_json(self):
         return json.dumps(self.mes_donnees)


Donc le problème n'est vraiment pas que j'utilise une structure complexe d'objet difficile à rendre serialisable.
Mon seul membre est un objet serialisable.
Le problème est juste de dire à Django: ceci est  un objet serialisable et voici le resultat : un dump du dictionnaire...

Ca t'aide ou la réponse est la même, dépiauter le code du sérialiser ?


Je sais que je pourrais bidouiller en écrivant une méthode "to_dict" et "from_dict" dans mon objet, et balancer un dictionnaire dans la session plutôt que mon objet.
Mais ça fait instancier des objets à chaque fois, ça me parait un peu crade et j'aimerais faire les choses proprement smile

Si quelqu'un a une piste je suis preneur, sinon il reste plus qu'à clôturer le sujet sad.

Hors ligne

#6 23-03-2015 13:06:19

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : [Résolu] Rendre un objet standard sérializable au yeux de Django

Pour t'aider, tu peux surement regarder les serializers du coté de Django REST framework.
Passer un objet dans le JSon ne veut pas dire qu'il est compatible avec ce format.
Par exemple, JSon n'a pas de type pour les dates ou les heures. Ces données ne sont pas serialisable sans travail.

Hors ligne

#7 23-03-2015 13:14:55

Drife
Membre
Inscription : 15-03-2015
Messages : 8

Re : [Résolu] Rendre un objet standard sérializable au yeux de Django

Ok.

Je te remercie de ton aide, je vais regarder tout ça.

En attendant, j'ai implémenter la méthode un peu crade que j'explique plus haut.
C'est toujours mieux que d'utiliser le PickeSerialiser je pense...

Hors ligne

  • Accueil
  • » Django-fr
  • » [Résolu] Rendre un objet standard sérializable au yeux de Django

Pied de page des forums