2010-08-18 22 views
19

Est-il possible d'utiliser webpy pour servir JSON? J'ai construit mon site web et j'ai besoin de fournir des informations dans JSON pour interagir avec le Javascript sur certaines pages.webpy: Comment servir JSON

J'essaie de chercher des réponses dans la documentation, mais je ne trouve rien.

Merci, Giovanni

Répondre

56

Je ne penseriez pas que vous auriez à faire quelque chose trop " spécial "pour web.py pour servir JSON.

import web 
import json 

class index: 
    def GET(self): 
     pyDict = {'one':1,'two':2} 
     web.header('Content-Type', 'application/json') 
     return json.dumps(pyDict) 
+0

parfait! Je savais que c'était plus simple que je ne l'imaginais! Merci beaucoup! –

+0

Si vous voulez afficher HTML * OU * JSON en fonction du client, j'ai posté quelques exemples de code dans une réponse à cette question. –

+0

@Sean: désolé ce n'est pas le but de cette question: je ne cherchais pas une bonne implémentation, mais un moyen simple de le faire. –

-6

Il est certainement possible de servir JSON de webpy, mais si vous et le choix d'un cadre, je regardais mon starlight et le crépuscule fourchette (pour la documentation).

Il dispose d'un wrapper JSON pour la fixation des en-têtes http pour votre réponse json.

utilise les bibliothèques json ou simplejson pour gérer les conversions vers et depuis d'autres objets. Je l'utilise maintenant et c'est génial.

https://bitbucket.org/marchon/twilight

Vous y trouverez un exemple appelé ShowMeTheJson.py

qui utilise JSON simples

from starlight import * 
from werkzeug.routing import Map 
from werkzeug.routing import RuleFactory 

import simplejson 


class ShowMeTheResponses(App): 

#################################################################### 
# 
# Sample URLS to Test Responses 
# 
# http://localhost:8080/    root 
# 
# http://localhost:8080/json   return JSON Mime Type Doc 
# 
################################################################### 



    @default 
    def hello(self): 
     return 'Hello, world!' 

    @dispatch('/') 
    def index(self): 
     return 'Hello Root!' 

    @dispatch('/html') 
    def indexhtml(self): 
     return HTML('Hello HTML') 

    @dispatch('/json') 
    def indexjson(self): 
     directions = {'N' : 'North', 'S' : 'South', 'E':'East', 'W' : 'West'} 
     return JSON(simplejson.dumps(directions))   


if __name__ == '__main__': 
    from werkzeug import run_simple 
    run_simple('localhost', 8080, ShowMeTheResponses()) 
+0

c'est génial, mais je ne peux pas migrer tout mon site web. avez-vous un pointeur pour webpy? –

+2

Dire aux gens d'utiliser «votre» cadre n'est pas vraiment une réponse à la question. –