Какой самый лучший рабочий процесс в магазине приложений Google App Engine? - PullRequest
3 голосов
/ 22 января 2011

Каков наилучший рабочий процесс для загрузки файла в blobstore при сохранении информации о blob и других полях в записи модели?

Например, должен ли я отправить форму на URL-адрес загрузки в blobstore (blobstore.create_upload_url), очистить форму, перенаправить, если возникли ошибки, и сохранить, а если нет, -

Каков наилучший способ вернуть ошибки обратно? ПОЛУЧИТЬ переменные? Я пытался использовать модели для сохранения ошибок формы и перенаправления на основе экземпляра модели ошибок формы, но это было грязно. Есть идеи?

1 Ответ

0 голосов
/ 23 января 2011

Решение, которое я придумал для этого, не самое красивое, но оно выполняет свою работу. В представлении загрузки (представление, указанное в функции create_upload_url) я передаю переменные записи тому же классу формы с первой страницы. Если форма верна, я сохраняю переменные вместе с BlobInfo.key в модели. Если это недопустимая форма, я сохраняю ошибки в memcache и перенаправляю обратно на первую страницу с переменной error, которая запускает представление, чтобы извлечь ошибки из memcache и добавить их в экземпляр формы.

Итак, снова вот шаги.

  1. Создать вид формы
  2. Проверка переменных POST с той же формой в первом представлении
  3. Если форма действительна, сохраните ее вместе с BlobInfo.key, если нет, сохраните ошибки в memcache с небольшим сроком службы и перенаправьте на первый просмотр с помощью ключа memcache в URL
  4. Извлечение ошибок формы из memcache и добавление их в новый экземпляр формы
  5. Повторно отправьте форму с исправленными ошибками и сохраните
...