我想用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
有没有办法将数据存储区实体的密钥发送到客户端?
任何建议都非常感谢。
答案 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)