从常规处理程序中检索上载的Blob信息

时间:2014-06-29 00:46:57

标签: python google-app-engine blobstore webapp2

我想将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类用于其他处理程序。

1 个答案:

答案 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 请注意,BlobstoreUploadHandlerwebapp.RequestHandler的子类,而不是webapp2.RequestHandler。我认为在大多数方式中,webappwebapp2都是API兼容的,但只要知道如果你在HandlerMixin做一些需要webapp2的时髦的事情}而不仅仅是webapp,该方法无法在UploadHandler中使用。