Google App Engine blobstore最佳工作流程是什么?
上传文件到blobstore的最佳流程是什么,同时又能把关于这个blob的信息和其他字段保存到模型记录里呢?
比如,我应该把表单提交到blobstore的上传网址(blobstore.create_upload_url),然后清空表单,如果有错误就重定向,如果没有错误就保存并重定向吗?
传递错误信息的最佳方式是什么呢?用GET变量吗?我试过用模型来保存表单错误,然后根据表单错误的模型实例进行重定向,但这样做很麻烦。有没有什么好的主意?
1 个回答
0
我想到的解决办法虽然不是最完美的,但能解决问题。在上传页面(就是在create_upload_url函数中指定的那个页面),我把从第一页面传来的数据放到了同一个表单类里。如果表单有效,我就把这些数据和BlobInfo.key一起保存到模型里。如果表单无效,我就把错误信息存到内存缓存中,然后重定向回第一页面,并在网址中带上错误信息的标识,这样页面就能从内存缓存中取出错误信息,并把它们添加到表单实例中。
所以,步骤大概是这样的:
- 创建表单页面
- 用第一页面的表单检查POST数据
- 如果表单有效,就保存数据和BlobInfo.key;如果无效,就把错误信息存到内存缓存中,设置一个短暂的有效期,然后重定向回第一页面,并在网址中带上内存缓存的标识
- 从内存缓存中取出表单错误信息,并添加到新的表单实例中
- 修正错误后重新提交表单并保存