3

我是 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 这些是我当前的烧瓶 + sqlalchemy 代码,符合 jquery 数据表插件:

@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 循环。任何的想法?

4

1 回答 1

4

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

import json
print json.dumps({"key": "value", "numbers": [1, 2, 3],})
# {"numbers": [1, 2, 3], "key": "value"}
于 2013-09-28T13:23:28.113 回答