WTForms文件验证限制

时间:2015-05-08 03:09:40

标签: python cherrypy wtforms

我想就天气提出一些建议我应该在WTForms中对CSV文件进行文件验证。用户故事是用户将选择要上载的文件,选择要执行的操作类型然后提交。现在我们正在控制器中使用辅助函数验证上传的文件。一位同事建议我使用WTForms来执行文件验证。 CSV文件将根据用户选择的操作类型具有不同的验证要求。所以我的问题是,WTForms是这种验证的好工具吗?如果是这样,你会对方法有任何建议。目前我阻止了如何将用户选择的内容传递给文件验证器。

这是我目前的实施方式:

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

1 个答案:

答案 0 :(得分: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

编辑:

如果您想根据无线电输入按钮进行验证,唯一合理的解决方案是从验证器功能中访问单选按钮的post变量。不确定语法,但尝试这样的事情:

    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!')

随意改善我的答案。