如何将密钥发送到JavaScript?

时间:2011-04-09 13:24:15

标签: python google-app-engine

我想用AJAX将图像src发送到浏览器。

服务器端:

que = db.Query(Imageitem).order('-created')
item_list = que.fetch(limit=1)
if(len(item_list)>0):
    itemkey = {'imgid':item_list[0].key()}
else:
    itemkey = {'imgid':''}
json_itemkey = gaejsonEncoder.encode(itemkey)

客户端模板:

<img src='img?img_id=$(.imgid)'></img>

我使用SNBinder进行客户端绑定,$(。imgid)表示itemkey [0] .imgid。

但这是错误。

datastore_types.Key.from_path(u'Imageitem', 515L, _app=u'fileshare')
is not JSON serializable

有没有办法将数据存储区实体的密钥发送到客户端?

任何建议都非常感谢。

2 个答案:

答案 0 :(得分:2)

如果要对密钥项进行JSON编码,只需将密钥传递给str()即可使用密钥的字符串版本:

itemkey = {'imgid': str(item_list[0].key())}

答案 1 :(得分:0)

我的情况我不需要密钥所以我使用了从json.JSONEncoder扩展的类来捕获所述db.Model的Key实例。

import json
from datetime import datetime
from google.appengine.ext.db import Key

class ComplexEncoder(json.JSONEncoder):
    def default(self,obj):
        if isinstance(obj,datetime):
            return obj.isoformat()
        if isinstance(obj,Key):
            return ''
        return json.JSONEncoder.default(self,obj)