WTForms 文件验证限制
WTForms File Validation Limitations
我想要一些关于天气的建议,我应该在 WTForms 中对 CSV 文件执行文件验证。用户故事是用户将 select 一个文件上传, select 执行的操作类型,然后提交。现在我们正在使用控制器中的辅助函数验证上传的文件。一位同事建议我使用 WTForms 来执行文件验证。 CSV 文件将根据用户 selects 的操作类型具有不同的验证要求。所以我的问题是,WTForms 是用于此类验证的好工具吗?如果是这样,您对方法有什么建议吗?目前我无法了解如何将用户 select 的内容传递给文件验证器。
这是我当前的实现:
# Controller
op_type = params['op_type']
file_info = params['input_file']
errors = ValidateFile(file_info, op_type)
if errors:
# do something
直到现在我才知道 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!')
欢迎改进我的回答。
我想要一些关于天气的建议,我应该在 WTForms 中对 CSV 文件执行文件验证。用户故事是用户将 select 一个文件上传, select 执行的操作类型,然后提交。现在我们正在使用控制器中的辅助函数验证上传的文件。一位同事建议我使用 WTForms 来执行文件验证。 CSV 文件将根据用户 selects 的操作类型具有不同的验证要求。所以我的问题是,WTForms 是用于此类验证的好工具吗?如果是这样,您对方法有什么建议吗?目前我无法了解如何将用户 select 的内容传递给文件验证器。
这是我当前的实现:
# Controller
op_type = params['op_type']
file_info = params['input_file']
errors = ValidateFile(file_info, op_type)
if errors:
# do something
直到现在我才知道 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!')
欢迎改进我的回答。