【问题标题】:webpy: How to serve JSONwebpy:如何提供 JSON
【发布时间】:2011-03-31 14:49:42
【问题描述】:

是否可以使用 webpy 来提供 JSON? 我建立了我的网站,我需要以 JSON 格式提供一些信息,以便与某些页面上的 Javascript 进行交互。

我试图在文档中寻找答案,但我找不到任何东西。

谢谢, 乔瓦尼

【问题讨论】:

    标签: python web.py


    【解决方案1】:

    我认为您不必为 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)
    

    【讨论】:

    • 完美!我知道这比我想象的要简单!非常感谢!
    • 如果您想根据客户端呈现 HTML OR JSON,我在回答这个问题时发布了一些代码示例。
    • @Sean:对不起,这不是这个问题的目的:我不是在寻找一个好的实现,而是一个简单的方法。
    • 我想我不明白“方法”和“实现”之间的区别,特别是因为您接受的答案是讨论较少的实现。 :-)
    【解决方案2】:

    当然可以从 webpy 提供 JSON,但是如果您选择框架,我会查看 starlight 和我的 fork twilight(用于文档)。

    它有一个 JSON 包装器,用于修复 json 响应的 http 标头。

    它使用 json 或 simplejson 库来处理与其他对象之间的转换。

    我现在正在使用它,它很棒。

    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())
    

    【讨论】:

    • 很好,但我无法迁移我的所有网站。你有 webpy 的指针吗?
    • 告诉人们使用“你的”框架并不能真正回答这个问题。
    猜你喜欢
    • 2011-06-12
    • 2012-11-04
    • 2017-12-16
    • 2020-09-30
    • 2011-09-05
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多