Ana*_*ees 6 python flask wtforms flask-wtforms
我有一个包含姓名和图片的表格
MyForm的:
name = TextField(
u'name',
validators=[
validators.DataRequired(),
validators.Length(min=1, max=25)
]
)
pictures = FileField(
u'pictures',
validators=[
FileRequired(),
FileAllowed(['jpg', 'png'], 'Images only!')
]
)
Run Code Online (Sandbox Code Playgroud)
Jinja2模板:
{% from "_form_helpers.tpl" import render_field %}
<form method="post" action="" enctype="multipart/form-data">
<dl>
{{ render_field(form.name) }}
{{ render_field(form.pictures) }}
</dl>
<p>{{ form.submit }}
</form>
Run Code Online (Sandbox Code Playgroud)
我想在一个字段中上传一个或多个图片(多选).
这该怎么做?
谢谢..
您需要为输入标记指定multiple属性.这可以在您的模板中完成,如下所示:
form.pictures(multiple="")
这将导致您生成的html允许多个文件选择:
<input id="pictures" multiple name="pictures" type="file">
images = request.files.getlist("pictures")
if images:
for img in images:
# Create Images
file_name = str(uuid.uuid4()) + secure_filename(img.filename)
image_file = os.path.join(app.config['UPLOAD_FOLDER'], file_name)
img.save(image_file)
# Save record
image = models.Image(record_id=record.record_id,
file_name=file_name.encode('utf-8'))
db.session.add(image)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)
来自:http://wtforms.readthedocs.org/en/latest/fields.html
render_kw(dict) - 如果提供,则提供一个字典,该字典提供将在呈现时提供给窗口小部件的默认关键字.
因此,您可以传递{multiple: True}到字段定义,如下所示:
forms.py
class UploadImages(Form):\n\n imgs = FileField(\n \'Select images\',\n render_kw={\'multiple\': True},\n )\n upload = SubmitField(\'Upload\')\nRun Code Online (Sandbox Code Playgroud)
uploade_template.html
{% import "bootstrap/wtf.html" as wtf %}\n{{ wtf.quick_form(form) }}\nRun Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4638 次 |
| 最近记录: |