Заполните форму (wtforms) в колбе с данными из базы данных с помощью psycopg2 - PullRequest
0 голосов
/ 08 мая 2019

У меня есть небольшая форма, которую я хочу заполнить результатами запроса, чтобы потом его можно было редактировать. Я использую Flask, WTForms и psycopg2 (без SQLAlchemy).

Функция просмотра:

@app.route('/editpositions/<row>', methods=['GET', 'POST'])
def editpositions_row(row):

    conn = connect(host="localhost", user="postgres", dbname="portfoliotool", password="")
    form = EditPositions()

    if request.method == 'GET':
        with conn.cursor() as cur:
            sql = "SELECT isin, aantal FROM posities WHERE posnr = %(row)s"
            cur.execute(sql, {"row": row})
            data_pos = cur.fetchall()
            form.isin.data = data_pos[0][0]
            form.aantal.data = data_pos[0][1]
            return render_template('editpositions.html', form=form)

HTML-шаблон:

{% block app_content %}
<<div class="container">
  <div class="row justify-content-center">
    <div class="col">
      <h1>Pas posities aan</h1>
          <form action="" method="post" novalidate>
          {{ form.hidden_tag() }}
          <p>
            {{ form.isin.label }}<br>
            {{ form.isin(size=32) }}
          </p>
          <p>
            {{ form.aantal.label }}<br>
            {{ form.aantal(size=32) }}
           <p>{{ form.submit() }}</p>
          </form>
      </div>
  </div>
</div>
{% endblock %}

Страница и форма отображаются нормально, но два поля не заполнены. Я проверил SQL-запрос в консоли, и он возвращает желаемые результаты, поэтому я предполагаю, что что-то упустил. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 09 мая 2019

В конце концов я нашел проблему. Код, указанный здесь, правильный. Проблема заключалась в том, что строка не получила правильное значение из-за ошибки в другом месте.

@app.route('/editpositions/<row>', methods=['GET', 'POST'])
...