2015-05-08 2 views
0

Я бы хотел, чтобы некоторые советы по погоде я должен выполнить проверку файлов для файла CSV в WTForms. История пользователя состоит в том, что пользователь выберет файл для загрузки, выберите тип операции для выполнения и затем отправьте. Сейчас мы проверяем загруженный файл с помощью вспомогательной функции в контроллере. Один из коллег предложил использовать WTForms для проверки файлов. Файл CSV будет иметь разные требования к проверке на основе типа op, который пользователь выбирает. Итак, мой вопрос: является ли WTForms хорошим инструментом для такого типа проверки? Если бы у вас были какие-либо предложения по подходу. В настоящее время я заблокирован о том, как передать то, что пользователь выбирает для проверки файлов.Ограничения проверки файлов WTForms

Вот моя текущая реализация:

# Controller 
op_type = params['op_type'] 
file_info = params['input_file'] 
errors = ValidateFile(file_info, op_type) 
if errors: 
    # do something 

ответ

1

Я не знал о WTForms до сих пор, так что я проверил crash course в документации, и я должен сказать, что это выглядит очень аккуратно и, кроме того, я думаю, что это очень просто добиться того, чего вы хотите. Почему бы просто не попробовать?

Базовый пример для wtforms.fields.FileField, что вам нужно будет использовать в вашем случае:

class UploadForm(Form): 
    image  = FileField(u'Image File', [validators.regexp(u'^[^/\\]\.jpg$')]) 
    description = TextAreaField(u'Image Description') 

    def validate_image(form, field): 
     if field.data: 
      field.data = re.sub(r'[^a-z0-9_.-]', '_', field.data) 

def upload(request): 
    form = UploadForm(request.POST) 
    if form.image.data: 
     image_data = request.FILES[form.image.name].read() 
     open(os.path.join(UPLOAD_PATH, form.image.data), 'w').write(image_data) 

найдено here.

EDIT:

Если вы хотите сделать проверку в зависимости от вашей кнопки ввода радио, единственным разумным решением было бы получить доступ к сообщению переменной вашей кнопки радио из функции валидатор. Не уверен в синтаксисе, но попробуйте что-то вроде этого:

def validate_file(form, field): 
     if field.data: 
      radio_x = form.radio_x.data 
      if radio_x == 'on': 
       # your validation 
       if error: 
        raise ValidationError('Your input is invalid!') 

Не стесняйтесь улучшать свой ответ.

+0

Таким образом, моя проблема заключается в том, что проверка зависит от того, какую радиокнопку пользователь выбирает. Не знаете, как настроить форму для этого. – Dan

+0

@ Если я получу ваш вопрос правильно, я не думаю, что речь идет о настройке формы, но о том, как вы реализуете проверку в python. Я отредактировал свой ответ. – Flaudre