【问题标题】:What is the best Google App Engine blobstore workflow?最好的 Google App Engine blobstore 工作流程是什么?
【发布时间】:2011-06-13 10:37:46
【问题描述】:

在将有关 blob 和其他字段的信息保存到模型记录的同时,将文件上传到 blobstore 的最佳工作流程是什么?

例如,我是否应该将表单提交到 blobstore 上传 url (blobstore.create_upload_url),清理表单,如果错误则重定向,如果没有则保存并重定向?

传递错误的最佳方法是什么?获取变量?我尝试使用模型来保存表单错误并根据表单错误模型实例进行重定向,但这很麻烦。有什么想法吗?

【问题讨论】:

    标签: python google-app-engine forms file-upload blobstore


    【解决方案1】:

    我为此提出的解决方案不是最漂亮的,但它可以完成工作。在上传视图(在 create_upload_url 函数中指定的视图)上,我将发布变量从第一页传递给相同的表单类。如果表单有效,我会将变量与 BlobInfo.key 一起保存到模型中。如果它不是有效的表单,我会将错误保存在 memcache 中,并使用错误变量重定向回第一页,该变量会触发视图从 memcache 中检索错误并将它们添加到表单实例中。

    所以这里又是步骤。

    1. 创建表单视图
    2. 从第一个视图检查具有相同表单的 POST 变量
    3. 如果表单有效,则将其与 BlobInfo.key 一起保存,否则将错误保存到寿命较短的 memcache 并使用 url 中的 memcache 键重定向到第一个视图
    4. 从内存缓存中检索表单错误并将它们添加到新的表单实例中
    5. 重新提交表单并修复错误并保存

    【讨论】:

    • memcache 在高内存压力下似乎有时会快速驱逐事物,因此您可能希望将错误保存到数据存储区(并有一个 cron 作业来清理旧错误),或者只是对所有错误进行编码(如果可能的话)在网址中。
    • 我先尝试了这两个,最终会回到数据存储选项,但 url 选项对我不起作用。
    猜你喜欢
    • 2012-07-22
    • 2013-09-23
    • 2014-08-30
    • 2013-12-25
    • 1970-01-01
    • 2020-03-09
    • 2020-03-08
    • 2011-07-13
    • 2013-09-23
    相关资源
    最近更新 更多