首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WTForms文件验证限制

WTForms文件验证限制
EN

Stack Overflow用户
提问于 2015-05-08 03:09:40
回答 1查看 3.3K关注 0票数 1

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

下面是我当前的实现:

代码语言:javascript
复制
# Controller
op_type = params['op_type']
file_info = params['input_file']
errors = ValidateFile(file_info, op_type)
if errors:
  # do something
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-09 12:57:24

直到现在我才知道WTForms,所以我检查了文档中的速成班,我不得不说这看起来很不错,而且我认为实现您想要的非常简单。为什么不试试呢?

您需要在您的案例中使用的wtforms.fields.FileField的基本示例:

代码语言:javascript
复制
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)

找到了这里

编辑:

如果您想根据您的单选输入按钮进行验证,唯一合理的解决方案是从验证器函数中访问您的单选按钮的post变量。不确定语法,但尝试如下所示:

代码语言:javascript
复制
    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!')

请随意改进我的答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30115113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档