Wtforms: erro “campo não presente”
-
27-09-2019 - |
Pergunta
Oi eu tenho uma classe de formulário que se parece abaixo:-
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])
A função de validador personalizada "CheckFile" se parece com o seguinte:-
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.
No entanto, acho que, embora eu navegue um arquivo no modelo e clique em enviar, ele sempre levanta o erro "Campo não presente". Estou um pouco confuso agora . Não é o caminho certo para verificar a presença de nomes de arquivos
Solução
Resolveu isso finalmente, teve que substituir field.data
no validador com field.file
e depois acesse seus atributos usando field.file.filename
.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow