我希望用户能够将图像上传到Google App Engine.我有以下(Python):
class ImageData(ndb.Model):
name = ndb.StringProperty(indexed=False)
image = ndb.BlobProperty()
Run Code Online (Sandbox Code Playgroud)
用户使用表单(HTML)提交信息:
<form name = "input" action = "/register" method = "post">
name: <input type = "text" name = "name">
image: <input type = "file" name = "image">
</form>
Run Code Online (Sandbox Code Playgroud)
然后由以下处理:
class AddProduct(webapp2.RequestHandler):
def post(self):
imagedata = ImageData(parent=image_key(image_name))
imagedata.name = self.request.get('name')
imagedata.image = self.request.get('image')
imagedata.put()
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试上传图片时,让我们说"Book.png",我收到错误:
BadValueError: Expected str, got u'Book.png'
知道发生了什么事吗?我已经和GAE工作了很长时间,但这是我第一次使用blob.
我使用了这个链接:https://developers.google.com/appengine/docs/python/images/usingimages
,它使用的是db,而不是ndb.我也尝试将图像存储在变量中,就像在链接中一样:
storedInfo = self.request.get('image')
然后存储它:
imagedata.image = ndb.Blob(storedInfo)
这也给了我一个错误:
AttributeError: 'module' object has no attribute …
我正在尝试从HTML的外部来源使用svg。假设我有这个svg:https: //upload.wikimedia.org/wikipedia/commons/0/09/America_Online_logo.svg
我发现了许多方法可以做到这一点,包括:
<img src="your.svg"/>
<object data="your.svg"/>
<iframe src="your.svg"/>
<embed src="your.svg"/>
<div style="background:url(your.svg)">...</div>
Run Code Online (Sandbox Code Playgroud)
但不幸的是,我必须使用的样式适用于svg标签。如果我以这个为例:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<image xlink:href="https://upload.wikimedia.org/wikipedia/commons/0/09/America_Online_logo.svg"/>
</svg>
Run Code Online (Sandbox Code Playgroud)
它不会显示在我的页面上,我只会看到一个空白的正方形!无论如何,我可以在svg标签中执行此操作吗?谢谢!
是否可以通过StringProperty对查询结果进行排序?
我有以下内容:
class User(ndb.Model):
first_name = ndb.StringProperty(indexed=False)
last_name = ndb.StringProperty(indexed=False)
Run Code Online (Sandbox Code Playgroud)
现在,如果我想从数据库中检索存储的条目,我使用它(它的工作原理):
user_query = User.query(ancestor=user_key(user_name))
Run Code Online (Sandbox Code Playgroud)
但我希望结果由first_name排序,所以我使用这个:
user_query = User.query(ancestor=user_key(user_name)).order(-User.first_name)
Run Code Online (Sandbox Code Playgroud)
这不起作用!我不知道出了什么问题,它不会产生任何错误,但不会再出现任何结果.我得到的只是一张空桌子:-(