@RaymanPy

Как сделать Цикл из Форм FLASK_WTF?

Допустим: если я ввожу данные во вторую форму и нажимаю на Submit второй формы , но цикл почему-то считает , что я нажимаю именно Submit первой формы и данные user.value записывает именно туда.
Можно ли вообще использовать класс формы для создания нескольких обьектов форм?

class TestForm(FlaskForm):
    param1 = StringField('param1')
    param2 = StringField('param2')
    submit = SubmitField('start')

@app.route('/'.methods=['GET','POST'])
def index():
    users = session.query(User).filter(User.id!=None).all()
    forms = [TestForm for i in range(len(users))]
    
    for form,user in zip(forms,users):
        if form.validate_on_submit():
            user.value = int(form.param1.data) + int(form.param2.data)
            session.add(user)
	    session.commit()
            redirect('/')
   return render_template('index.html',forms=forms,users=users,count=len(forms))

{% block content %}
<table class="table table-bordered table-dark">
  <thead>
    <tr>
      <th scope="col">#</th>
      <th scope="col">Модель</th>

      <th scope="col">количнсто</th>
      <th scope="col">бла бла бла</th>
    </tr>
  </thead>
  <tbody>
  	{% for i in range(count) %}
  	
    <tr>

      <th scope="row"> {{ users[i].id }} </th>
      <td>{{ users[i].name }}</td>

    <form action="", method="post"> 
      {{ forms[i].hidden_tag() }} 
      <td>
      
       {{ forms[i].param1(class="form-control") }}
      </td>

      <td>
      
       {{ forms[i].param2(class="form-control") }}

      </td>

      <td>
        {{ forms[i].submit(class="btn btn-primary") }} 
      </td>
      </form>
      <td>
       {{ users[i].value }} 
      </td>
    </tr>

   	{% endfor %}
    
  </tbody>
</table>

{% endblock %}
  • Вопрос задан
  • 34 просмотра
Решения вопроса 1
@RaymanPy Автор вопроса
Нашел на StackOverflow подобный вопрос.
Так вот дело в том , что в POST-запросе не указано с какой именно формы поступили данные.
Для решения проблемы нужно разделить GET и POST обработчики :
Вот собственно и сам ответ
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы