Pregunta

Hola tengo una clase de formulario que se parece a continuación: -

class UserCreateForm(wtf.Form):
    name=wtf.TextField('Name',validators=[validators.Required(),username_check])
    email=wtf.TextField('Email')
    userimage=wtf.FileField(u'Upload Image',validators=[checkfile])

La función validador personalizado "checkfile" es similar al siguiente: -

def checkfile(form,field):
   if field.data:
      filename=field.data.lower()
      ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg', 'gif'])
      if not ('.' in filename and filename.rsplit('.',1)[1] in ALLOWED_EXTENSIONS):
            raise ValidationError('Wrong Filetype, you can upload only png,jpg,jpeg,gif files')
  else:
      raise ValidationError('field not Present') # I added this justfor some debugging.

Sin embargo me parece que a pesar de que hojeo un archivo en la plantilla y clic en Enviar, que siempre plantea el "campo no está presente" error. soy un poco confundido aquí. No es field.data de la manera correcta para comprobar si hay la presencia de los nombres de archivo

¿Fue útil?

Solución

Resuelto este último, tenía que reemplazar field.data en el validador con field.file y luego acceder a sus atributos utilizando field.file.filename.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top