Flask 如何使用默认文件创建WTForms文件字段?

Flask 如何使用默认文件创建WTForms文件字段?,flask,wtforms,Flask,Wtforms,我想创建一个带有文件字段的flask_wtf表单,但我希望文件输入为默认值。 我怎样才能做到这一点? 例如: 对于此表单,我可以直接创建为: 表单=发票表单(a='123') 对于类似情况: class InvoiceForm(FlaskForm): a = FileField() 我想用默认的filefield调用表单。 如何实现这一点?使用默认文件的文件路径,打开文件(给定其扩展名)并将文件对象指定给表单数据 例如,如果表单文件字段用于图像(如.png、.jpg),则可以像通常那样

我想创建一个带有文件字段的flask_wtf表单,但我希望文件输入为默认值。 我怎样才能做到这一点? 例如:

对于此表单,我可以直接创建为: 表单=发票表单(a='123')

对于类似情况:

class InvoiceForm(FlaskForm):
    a = FileField()
我想用默认的filefield调用表单。
如何实现这一点?

使用默认文件的文件路径,打开文件(给定其扩展名)并将文件对象指定给表单数据

例如,如果表单文件字段用于图像(如.png、.jpg),则可以像通常那样创建表单字段:

from flask_wtf.file import FileField, FileAllowed   

class InvoiceForm(Form):
  a = FileField(validators=[FileAllowed(['jpg', 'png'])])
然后在路径中,可以从给定的文件路径打开图像对象(注意,我建议不要硬编码文件路径,而是将其存储为环境变量),并将图像对象存储到表单中。a.data:

from PIL import Image  # Used for opening image objects

@example.route('/', methods=['GET', 'POST']
def example():

  form = InvoiceForm()
  form.a.data = Image.open(default_file_path)
  # rest of route code below
请注意,在模板中查看表单时,“文件表单”字段仍将显示“未选择任何文件”,但如果用户要提交表单,则“文件表单”字段将有一个将提交的默认图像对象。您可能会使用一些javascript(请参阅)为默认文件添加更好的UX

我还建议添加您自己的表单验证,以限制文件的最大大小、可以上载的文件类型,以及将任何非平面文件路径转换为平面文件的文件名验证。详情见米格尔·格林伯格

from PIL import Image  # Used for opening image objects

@example.route('/', methods=['GET', 'POST']
def example():

  form = InvoiceForm()
  form.a.data = Image.open(default_file_path)
  # rest of route code below