私は、テキストフィールドの間に画像をアップロードする要素を含むフォームを持っています。
ブロブストアにブロブを保存し、ndb.BlobKeyProperty()
を使用してモデル(ndb.Model
)で参照します。
this linkに示す方法は、このようにして作成されたリンクから呼び出され、アップロードハンドラ(UploadHandler
)を使用しています。GAE Blobstore:他のテキストフィールドと共にBLOBをアップロードする
upload_url = blobstore.create_upload_url('/upload')
upload_url
はブロブをアップロードするために作成したページのフォームのアクションです。しかし、私のフォームには、UploadHandler
postメソッドで処理されない他のフィールドが含まれています。この方法は、私が持っているページごとにmain.py
で新しいハンドラを定義する必要があることを除いて、作品
class EditProfile(blobstore_handlers.BlobstoreUploadHandler, BaseHandler)
def get(self):
params['upload_url'] = blobstore.create_upload_url('/upload_blob1')
... fields ...
def post(self):
upload_blob = self.get_uploads()
blob_key = upload_blob[0].key()
value_field1 = self.request.POST.get('field1')
value_field2 = self.request.POST.get('field2')
value_field3 = self.request.POST.get('field3')
...
:私が見つけ 一時的な解決策は、私たBaseHandlerからとBlobstoreUploadHandlerから継承し、私のフォームのハンドラを作成することでしたブロブをアップロードする:
app = webapp2.WSGIApplication([ ('/upload_blob1', handlers.EditProfile),
('/upload_blob2', handlers.EditBlob2Handler),
('/serve/([^/]+)?', handlers.ServeHandler) ],
debug=os.environ['SERVER_SOFTWARE'].startswith('Dev'), config=webapp2_config)
質問:アップロードブロブタスクを実行するために別のページから呼び出された:私は(UploadHandler
例えば)1つのアップロード・ハンドラを使用することができますか?経験豊富なGAEプログラマーにとってこれは非常に簡単かもしれないが、私は解決策を見出していない。
これまでに入力したものはすべて正しいものです。ブロブをアップロードする必要がある2つの別々のフォームがある場合、2つの別々のハンドラが必要になります。すべてのフォームフィールドが同じ場合、同じハンドラを使用するのが理にかなっています。 – dragonx
'handlerlers.EditProfile'と' handlers.EditBlob2Handler'の両方で使用されるアップロードハンドラ( 'UploadHandler')を1つしか持たない場合はどうなりますか?それは可能ですか?どうやって? –
2つのハンドラに送信されるフォームが同じで、2つのハンドラが同じ場合は、create_upload_url()の宛先として適切なURLを渡して、両方を同じURLに転送できます。ハンドラが異なっていて異なることをする場合、これは愚かな疑問です。 – dragonx