2011-01-21 4 views
3

ブロブやその他のフィールドに関する情報をモデルレコードに保存しながら、ブロブストアにファイルをアップロードするための最良のワークフローは何ですか?Google App Engineのベストブロブストアのワークフローは何ですか?

たとえば、フォームをblobstore upload url(blobstore.create_upload_url)に送信してフォームを消去し、エラーの場合はリダイレクトし、保存してリダイレクトしない場合はどうすればよいですか?

エラーを戻す最善の方法は何ですか。変数を得る?私はモデルを使用してフォームエラーを保存し、フォームエラーモデルインスタンスに基づいてリダイレクトしようとしましたが、それは面倒です。何か案は?

答えて

0

私がこれを思いついた解決策は、最もきれいではありませんが、それは仕事を完了させます。アップロードビュー(create_upload_url関数で指定されたビュー)で、最初のページから同じフォームクラスに投稿変数を渡しています。フォームが有効な場合は、変数をBlobInfo.keyと共にモデルに保存します。有効なフォームでない場合、私はmemcacheのエラーを保存し、エラーの変数を持つ最初のページにリダイレクトして、ビューを起動してmemcacheからエラーを取得し、フォームインスタンスに追加します。

ここでも手順があります。

  1. フォームはBlobInfo.keyと一緒に保存有効であれば、小さな寿命とmemcacheのためのエラーを保存しない場合は、最初のビューからフォームビューに
  2. を同じ形式で
  3. チェックPOST変数を作成します。固定エラーのあるフォームを再送信してくださいmemcacheのからの形状誤差を取得し、新しいフォームインスタンス
  4. に追加するURL
  5. でmemcacheのキーを持つ最初のビューにリダイレクトし、保存
+0

memcacheはメモリの負荷が高いときには速やかに削除するように見えるので、エラーをデータストアに保存したり(古いものをクリーンアップするためにcronジョブを使用する)、または可能であればすべてのエラーをurl。 – Amir

+0

私はそれらの両方を最初に試みて、最終的にデータストアオプションに戻りますが、urlオプションは私のためには機能しませんでした。 – man2xxl

関連する問題