我用这个例子来实现某种留言簿,只是我使用的是 django 框架。我不能在 html 文件中使用 db.key() 函数,所以我想也许我应该传递带有键的字符串表示的 html 并通过这个解决这个问题。我检查了文档,它说
通过将 Key 对象传递给 str(),可以将键转换为字符串。
所以我用过:
all_messages = db.GqlQuery( "SELECT * FROM Messages WHERE ANCESTOR IS :1 ORDER BY date DESC LIMIT 20" , image_key('name'))
for msg in all_messages:
msg.img_key_func = str(msg.key())
这是将键转换为字符串的正确方法吗?
我的 html 看起来像这样:
<ol name="list">
{% for message in all_messages %}
<li><div><img src="img?img_id={{ message.img_key_func }}"></img>{{ message.content }}</div></li>
{% endfor %}
</ol>
我需要做的只是像这个例子:
self.response.out.write("<div><img src='img?img_id=%s'></img>" %
greeting.key())
日志的结果是: /img?img_id=None 因此,我无法显示图像。
有没有更简单的方法来做到这一点?谢谢!
编辑 1: 更多信息
提交按钮触发
类发件人(webapp.RequestHandler):
具有以下内容:
def post(self):
accountName = self.request.get( "accountName" )
text = self.request.get( "text" )
message = Messages(parent=image_key('name'))
message.content = self.request.get( "text" )
avatar = self.request.get('img')
if avatar:
avatar = images.resize(self.request.get("img"), 32, 32)
image_full = self.request.get("img")
message.avatar = db.Blob(avatar)
message.imageblob = db.Blob(image_full)
message.put()
Messages(db.Model) 看起来像:
class Messages(db.Model):
imageblob = db.BlobProperty()
avatar = db.BlobProperty()
content = db.StringProperty(multiline=True)
date = db.DateTimeProperty(auto_now_add=True)
def image_key(some_id='name'):
return db.Key.from_path('StartPage', 'name')
问题是,我应该在下载后立即存储头像还是应该在请求 get_main_page 的时候调整大小?这样我可以避免存储 2 个图像 - 一个全尺寸和另一个头像。我还应该使用 image_key 吗?