我想将Google的BlobStore用于我的GAE应用。我希望用户上传图像以及其他表单数据。我知道我可以在self.request.get
内使用BlobstoreUploadHandler
事件来获取其他表单数据。但是,我创建了一个appengine的通用处理程序的子类(即class Handler(webapp.RequestHandler)
),它包含了我希望所有处理程序都具有的其他方法。我有没有办法让我的上传处理程序继承自Handler
并仍然获得blob信息?
获取blob的正常方法
class UploadHandler(blobstore.BlobstoreUploadHandler):
def post(self):
blob_info = self.get_uploads("image")
我想要获取blob的方式
class Handler(webapp.RequestHandler):
def get_logged_in_user(self):
#check cookie and session data
return username
class UploadHandler(Handler):
def post(self):
image_info = # Somehow get blobinfo
Data = Data(title=self.request.get("name"), image=image_info)
注意:我不想让Handler
继承BlobstoreUploadHandler,因为我也将Handler
类用于其他处理程序。
答案 0 :(得分:1)
您可以创建一个mixin类,它定义您的特殊方法并使用它来创建处理程序。然后,您可以使用相同的mixin来创建上传处理程序......
class HandlerMixin(object):
def get_logged_in_user(self):
...
class Handler(webapp2.RequestHandler, HandlerMixin):
pass
class UploadHandler(blobstore.BlobstoreUploadHandler, HandlerMixin):
def post(self):
...
1 请注意,BlobstoreUploadHandler是webapp.RequestHandler
的子类,而不是webapp2.RequestHandler
。我认为在大多数方式中,webapp
和webapp2
都是API兼容的,但只要知道如果你在HandlerMixin
做一些需要webapp2
的时髦的事情}而不仅仅是webapp
,该方法无法在UploadHandler
中使用。