standard run google engine deploy app python django google-app-engine django-forms django-nonrel

python - run - Manejar la falla de forma al cargar a Appengine Blobstore



google cloud platform python github (1)

Estoy usando django-nonrel y django-filetransfer de @wkornewald en Google App Engine.

Puedo subir archivos muy bien, pero solo cuando todo el formulario es válido. Si el formulario falla la validación de cualquier campo, explota por completo en lugar de volver al usuario para corregir los cambios.

el mensaje de error es:

INFO 2011-03-10 20:27:09,496 dev_appserver.py:535] Internal redirection to /admin/rr/member/add/ INFO 2011-03-10 20:27:09,662 dev_appserver_blobstore.py:328] Upload handler returned 200 ERROR 2011-03-10 20:27:09,662 dev_appserver_blobstore.py:341] Invalid upload handler response. Only 301, 302 and 303 statuses are permitted and it may not have a content body. INFO 2011-03-10 20:27:09,680 dev_appserver.py:3317] "POST /_ah/upload/ag5kbXJvbGxpbnJlbGljc3IcCxIVX19CbG9iVXBsb2FkU2Vzc2lvbl9fGIkBDA HTTP/1.1" 500 -

Tengo un modelo simple que se ve así:

class Member(PhotoMixin, models.Model): name = models.CharField(max_length=50) name2 = models.CharField(max_length=50, blank=True) member_since = models.DateField(blank=True, null=True) full_size_image = models.FileField(verbose_name="Photo", upload_to=''members/'') is_active = models.BooleanField(default=True)

¿Hay alguna manera en que pueda manejar esto con más gracia? Creo que es probable porque django-filetransfers quiere que publique el formulario en la url de carga de blob, y esa url no sabe qué hacer con un error. ¿Debe haber un paso intermedio que maneje la mayor parte del formulario y las publicaciones en la URL de carga si y solo si el resto es válido?


La API de blobstore requiere la vista del controlador de carga para devolver una redirección.

como el registro de errores publicado anteriormente dice:

Only 301, 302 and 303 statuses are permitted and it may not have a content body.

Para solucionar este problema, modifiqué los métodos add_view y change_view de ModelAdmin para devolver un redireccionamiento en un error de validación de formulario, pero virado en la cadena de consulta para que los valores de entrada no se pierdan.

A continuación, al inicializar el formulario en la solicitud GET, compruebo ''failed_validation'' en los parámetros de consulta para indicar que envíe los datos del formulario a los formularios / formssets para que se active la validación.

El código está en bitbucket: https: //[email protected]/aaronmadison/django-filetransfers .

Ahora puedes subir a la tienda de blobs y manejar errores ... yay.