【问题标题】:Create Python code to supply json data for jQuery datatables创建 Python 代码为 jQuery 数据表提供 json 数据
【发布时间】:2013-10-04 17:30:06
【问题描述】:

我是 Python 新手,但我想快速理解它。 目前我正在 Openshift 平台上开发 Flask+SQLAlchemy+PostgreSQL+jQuery。 而且我发现在这里尝试使用这个 jQuery 插件 datatables.net 很困难:

http://datatables.net/release-datatables/examples/server_side/server_side.html

服务器端的例子是用 PHP 编写的,我可以很好地理解它,但是我在将它翻译成 Python 时遇到了问题。目前我对 Python Dict(据我所知可以与 JSON 相媲美)数据结构的理解并不好。

我现在正在翻译它,但如果你能告诉我正确的 python 代码来做这件事,我会很高兴

编辑 1 在阅读并使用 dict 上的 Python 文档后,我可以使用常规的 python dict + json.dumps() 构建准确的 JSON 数据:

@app.route ('/dataset/users')
    def dataset_users():                                                                                

    data = {}                                                                                            
    data['aaData']=[]                                                                                    
    data['iTotalRecords']=3                                                                              
    data['sEcho']=1                                                                                      
    data['iTotalDisplayRecords']=1                                                                       

    data['aaData'].append(['Gecko', 'FFox', 'Win', '1.1','A'])                                           
    data['aaData'].append(['Webkit', 'Safari', 'OSX', '3','B'])                                          
    data['aaData'].append(['IE', 'IE', 'Win', '2','C'])                                                  
    return json.dumps(data)   

现在正在使用 SQLAlchemy + Flask 对结果集进行 jsonify 处理

编辑 2 这些是我当前符合 jquery 数据表插件的烧瓶+sqlalchemy 代码:

@app.route ('/dataset/users')
def dataset_users():                                                                                     
    data = {}                                                                                            
    data['iTotalRecords'] = 2                                                                            
    data['sEcho'] = 1                                                                                    
    data['iTotalDisplayRecords'] =  2                                                                    

    aaData = []                                                                                          
    users=models.Users.query.with_entities(                                                              
        models.Users.id, models.Users.username,                                                          
        models.Users.email).order_by(models.Users.username).all()                                        
    for user in users:                                                                                   
        aaData.append([user.id, user.username, user.email, 'Modify'])                                                       

    data['aaData']=aaData                                                                                
    return json.dumps(data)                          

我相信我们可以精简代码,使其不再使用 for 循环。有什么想法吗?

【问题讨论】:

  • 我在这个问题中没有看到任何涉及 twitter-bootstrap 的内容。
  • 请原谅我,因为我是 Bootstrap + Python 的新手,但 datatables.net 不是一个引导程序 .. 等一下。这是一个jQuery插件。感谢您的关注。我会改写我的问题

标签: jquery python json sqlalchemy flask


【解决方案1】:

您可以使用 json 模块将 Python dict 转换为 JSON:

import json
print json.dumps({"key": "value", "numbers": [1, 2, 3],})
# {"numbers": [1, 2, 3], "key": "value"}

【讨论】:

  • 谢谢!我已经知道该功能,但是..如何构造该指定的字典超出了我目前的理解。这是给定示例用于发送正确 JSON 数据的 url:datatables.net/release-datatables/examples/server_side/scripts/… 我正在尝试将其模仿为 python dict.. 或者,等一下,也许我可以将其保存到文件中,然后找到 python 函数将直接将其转换为 dict... 之后我可以构建有关如何使用我的数据创建该 python dict 的 python 代码
  • 好的,知道了。 stackoverflow.com/questions/2835559/… 我已经把那个 json 作为 python dict 了。现在正在研究如何在我的程序中构建该字典。感谢@Thomas 的简洁回答。它引导我清除路径;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多