webpy: как обслуживать JSON

Можно ли использовать webpy для обслуживания JSON? Я создал свой веб-сайт, и мне нужно предоставить некоторую информацию в JSON для взаимодействия с Javascript на некоторых страницах.

Я пытаюсь искать ответы в документации, но не могу ничего найти.

Спасибо, Джованни

22
задан Giovanni Di Milia 18 August 2010 в 14:58
поделиться

2 ответа

Я бы не подумал, что вам придется делать что-то слишком "особенное", чтобы web.py обслуживал 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)
61
ответ дан 29 November 2019 в 04:01
поделиться

Конечно, можно обслуживать JSON из webpy, но если вы выбираете фреймворк, я бы посмотрел на starlight и my fork twilight (для документации).

Он имеет оболочку JSON для исправления заголовков http для вашего ответа json.

он использует библиотеки json или simplejson для обработки json преобразований в другие объекты и обратно.

Я использую его прямо сейчас, и это здорово.

https://bitbucket.org/marchon/twilight

в нем вы найдете пример под названием ShowMeTheJson.py

, который использует простой json

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())
-6
ответ дан 29 November 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: