Я хочу предварительно установить некоторые данные в wtform, используя шаблон jinja, потому что for l oop для получения переменной происходит в jinja. Есть хороший способ сделать это?
Так все устроено.
Шаблон Jinja l oop:
{% if volumes %}
{% for volume_pair in volumes %}
{% set form.volumes.data = namespace(volume_pair) %}
{{ f.render_form_field(form.volumes) }}
{% endfor %}
{% endif %}
forms.py:
class DeployForm(FlaskForm):
name = StringField('App Name', validators=[InputRequired()])
image = StringField('Image', validators=[InputRequired()])
ports = StringField('Port')
volumes = StringField('Volume')
env = FieldList(FormField(EnvField))
restart_policy = StringField('Restart Policy', validators=[InputRequired()])
просмотров. py:
def app_info(app_id):
app = Template_Content.query.filter_by(id=app_id).first()
bind_list = []
volume_list = []
for volume_dict in app.volumes:
bind_list.append(volume_dict.get('bind'))
volume_list.append(volume_dict.get('container'))
volumes = tuple(zip(bind_list,volume_list))
form = DeployForm(request.form, ports=app.ports) #Set the form for this page
if form.validate_on_submit():
print('valid')
return render_template('apps/deploy_app.html', form=form, app=app, volumes=volumes)
В настоящее время, если я закомментирую строку «set» в шаблоне jinja, он создает правильное количество форм, но предварительно заполняет их все одними и теми же данными (полными данными turple) . Если я не прокомментирую строку «set» в шаблоне jinja, я получаю следующую ошибку:
raise TemplateSyntaxError("expected token %r, got %r" %
jinja2.exceptions.TemplateSyntaxError: expected token 'end of statement block', got '
Есть ли для меня лучший способ создать это?