очень подробный пост про формы во flask
конкретно такую форму можно сделать так:
from flask_wtf import Form, TextField, FileField
class PuziForm(Form):
image_url = TextField("label1")
image = FileField("label2")
@app.route('/test', methods=['GET', 'POST'])
def test():
form = PuziForm()
if form.validate_on_submit():
result = (form.image.data and form.image.data.read()) or form.image_url.data
else:
result = 'not submitted'
return render_template('test.html', form=form, result=result)
<form method="post" enctype=multipart/form-data>
{{ form.hidden_tag() }}
{% for element in form %}
{% if element.widget.input_type != 'hidden' %}
{{ element.label }} {{ element() }} <br>
{% endif %}
{% endfor %}
<input type="submit">
</form>
<br>
{{ result }}
закругленные уголки добавить по вкусу.