Автоматическая отправка в Flask-WTForms с макросом не работает - PullRequest
0 голосов
/ 08 ноября 2019

Я бы хотел, чтобы моя форма автоматически отправлялась, когда последнее поле обнаруживает ввод. Вот то, что у меня есть на стороне HTML, основываясь на том, что я мог найти в Интернете ... Я знаю, что, возможно, что-то упустил ...

{% extends "base.html" %}

{% from 'bootstrap/form.html' import render_field %}

{% block content %}
    <img src="/static/logo.jpg"  alt="logo" width="50%" height="auto">
    <h1>Scan ABC...</h1>
    <form action="" method="post" novalidate>
        {{ form.hidden_tag() }}
        <p>
            {{ form.A.label }}<br>
            {{ form.A(autofocus=true, required=true, size=32) }}
        </p>
        <p>
            {{ form.B.label }}<br>
            {{ form.B(required=true, size=32) }}
        </p>
        <p>
            {{ form.C.label }}<br>
            {% macro render_field(C(**{required=true, size=32, onchange="this.form.submit()"})) %}
            {% endmacro %}
        </p>
        <p>{{ form.submit() }}</p>
    </form>
{% endblock %}

Вот мой form.py

from flask_wtf import FlaskForm
from wtforms import StringField, IntegerField, SubmitField
from wtforms.validators import DataRequired


class Form(FlaskForm):
    A= StringField('A', validators=[DataRequired()])
    B= StringField('B', validators=[DataRequired()])
    C= IntegerField('C', validators=[DataRequired()])
    submit = SubmitField('Submit')

Я получаю эту ошибку

jinja2.exceptions.TemplateSyntaxError: expected token ',', got '('

в этой строке

{% macro render_field(weight(**{required=true, size=32, onchange="this.form.submit()"})) %}

1 Ответ

0 голосов
/ 08 ноября 2019

Работает ли в других случаях без автоматической отправки? В моем случае я использую только onchange = "submit ()", т.е., например:

{{ filterform.search_text(class="form-control-button", onchange="submit()") }}

, что приводит к:

<input checked class="form-control-button" id="search_keywords" name="search_keywords" onchange="submit()" type="checkbox" value="y">

Возможно, вы захотите попробовать onchange = "submit () "

...