我有一个简单的表单,提交图像到blobstore和图像的标题.这适用于我的本地devserver但是当我部署我的代码时,标题中的非ascii字母变成了乱码,带有ascii和hex的某种混合.例如,Ísland成为= CDsland.注意,我<meta http-equiv="Content-Type" content="text/html; charset=utf-8">在标题中使用 第一个值.此外,utf-8适用于我的所有其他形式.只是多部分形式变得乱码.无论如何这是我的形式:
<form action="{{ uploadurl }}" enctype="multipart/form-data" method="post">
<div><label>Title</label><input type="text" name="title" class="string" /></div>
<div><label>Picture</label><input type="file" name="img"/></div>
<div style="margin-top:10px;"><input type="submit" value="Add picture" /></div>
<input type="hidden" value="{{ album.key }}" name="alid"/>
</form>
Run Code Online (Sandbox Code Playgroud)
这是处理表单的类:
# handler for posting photos
class PostPhoto(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
upload_files = self.get_uploads('img')
photourl = images.get_serving_url(str(upload_files[0].key()))
photo = Photo()
#because of multipart/form-data
photo.title = self.request.get("title")
photo.photourl = photourl
photo.photoalbum = PhotoAlbum.get(self.request.get('alid'))
photo.put()
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?我是否必须进行一些服务器端编码/解码?我试过google搜索没有结果(python newb),所以这是我最后的手段,我只是改变我的设计并拆分表格.
所以我决定重写我的图片库,因为新的高性能图像服务的东西.这意味着使用我以前从未使用过的Blobstore.在我尝试将BlobKey存储在我的模型中之前,这似乎很简单.
我如何在模型中存储对blobstorekey的引用?我应该使用字符串还是应该使用一些我不知道的特殊属性?我有这个模型
class Photo(db.Model):
date = db.DateTimeProperty(auto_now_add=True)
title = db.StringProperty()
blobkey = db.StringProperty()
photoalbum = db.ReferenceProperty(PhotoAlbum, collection_name='photos')
Run Code Online (Sandbox Code Playgroud)
我收到此错误:属性blobkey必须是str或unicode实例,而不是BlobKey
当然,我是应用程序引擎的新手,但这是我见过的第一个主要墙.谷歌广泛搜索没有任何成功.