2010-11-23 4 views
0

Je passais ma soirée à lutter contre jsonReader: configuré correctement dans jqgrid pour correspondre à la sortie JSON des capacités du sérialiseur de django. J'ai depuis été malade d'essayer et j'ai décidé que je devrais juste faire un point de vue pour donner la sortie jqgrid veut que json soit dedans par défaut. Mon plan est d'écrire une vue qui forme une chaîne qui ressemble à jqgrid le veut. Cela me semble un peu moche (c'est-à-dire beaucoup de formatage manuel de JSON), mais je pense que c'est probablement le chemin le plus extensible pour l'avenir si je choisis d'utiliser plus de fonctionnalités de jqgrid. Quelle est la méthode recommandée pour obtenir un format JSON personnalisé à partir de Django? Quelle est la méthode Django recommandée pour accomplir ce que je vais accomplir en créant une vue comme l'exemple ci-dessous?Quelle est la méthode recommandée pour sérialiser les données django dans json pour travailler avec jqgrid?

def serializedData(request): 
    querySet = Model.objects.filter(date=None).order_by('id') 
    data = '{' 
    for row in querySet: 
     # go through each item and make a pretty json row and add it to data 
    data += '}' 
    return HttpResponse(data) 

Répondre

0

J'ai fini par créer un modèle de django qui correspondent au format JSON je voulais. Cela s'est avéré être un couple de lignes donc je ne peux pas imaginer le rendre plus simple, surtout quand les noms doivent être assignés manuellement de toute façon.

example..something semblable à ceci:

[{% for herp in derps %} 
    { "id":"{{ herp.id }}___", "value":"{{ herp.value }}"}{% if not forloop.last %},{% endif %} 
{% endfor %}] 
0

Cela fera:

from django.utils import simplejson 
return HttpResponse(simplejson.dumps(data), mimetype="application/json") 
+0

Ouais, je suis déjà en mesure d'utiliser que si je choisis, je cherchais juste quelque chose à rationaliser le JSON jqGrid mise en forme pour moi (à savoir les étapes créer cette variable "data"). Merci pour la suggestion cependant. – wilbbe01

0

Vous devriez probablement vérifier quelques-unes des sérialisation/cadres API disponibles là-bas:

  • django-piston que je n'aime pas tant puisque la sérialisation n'est pas si flexible à mon avis.
  • SpitEat, qui est construit pour permettre la sérialisation très flexible, mais le doc est complètement démodé ... Je ne trouve pas le temps de le réparer ... mais vous pouvez probablement trouver votre chemin en lisant les tests, et le le code source (qui est complètement documenté et doc est mise à jour)
  • plus there paquets
+0

Merci pour les suggestions. Je pense que je vais peut-être suivre ma propre voie manuelle, mais faites-le avec prudence tout en gardant un œil sur ce qui est disponible. Aller sur la route manuelle me rendra moins sensible aux changements de cadre de 3ème partie. – wilbbe01

+0

C'est aussi un choix! Mais si vous avez enfin besoin de sérialiser beaucoup de choses différentes, et que votre besoin grandit au cours du développement, vous pourriez finir par écrire beaucoup de code que vous auriez pu éviter en utilisant l'un de ces frameworks! Et ce que vous avez pris pour gagner du temps (en suivant votre propre chemin), pourrait finir dans une grande perte de temps !!! – sebpiq

Questions connexes