Получение значения HiddenField, вставив его из шаблона - Flask

Я новичок в программировании на Python/Flask, и у меня возникли проблемы с возвратом значения моего HiddenField, вставив его из моего шаблона.

Это моя форма класса:

class DownloadForm(Form):
link = HiddenField()
download = SubmitField('Download')

И это мой шаблон "Материал" с таблицей, в которую я помещаю свои материалы из БД и куда я пытаюсь поместить значение HiddenField:

    <tbody>
    {% for mat in materials %}
      <tr>
        <td>{{ mat.author }}</td>
        <td>{{ mat.title }}</td>
        <td>{{ mat.subject }}</td>
        <td>{{ mat.description }}</td>
                    <td>{{ mat.faculty }}</td>
                    <td>{{ mat.professor }}</td>
                    <td>
          <select class="form-control">
            <option>1</option>
            <option>2</option>
            <option>3</option>
            <option>4</option>
            <option>5</option>
          </select>
        </td>
          <form method="POST" enctype="multipart/form-data" action={{url_for('download')}}>
          {{ formDownload.link(value = '{{mat.link}}')}}
        <td>{{ formDownload.download }}</td>
          </form>
        <td>{{ formDelete.delete }}</td>
      </tr>
  {% endfor %}
  </tbody>
  </table>

Проблема в этой строке кода, где я хотел бы вставить значение HiddenField.

{{ formDownload.link(value = '{{mat.link}}')}}

Я хочу вставить значение здесь, потому что каждый SubmitField связан с определенной строкой таблицы. Переменная mat.link содержит URL-адрес материала, который пользователи хотят загрузить, но я не могу получить это значение с помощью функции form.request['link'].

Вот моя функция загрузки при отправке формы:

@app.route('/download', methods=['GET', 'POST'])
def download():

form = DownloadForm(csrf_enabled=False)

if form.validate_on_submit():
    link = request.form['link']
    return redirect(url_for('download',
                            filename=link))

Я попытался отладить мое приложение, и в результате ссылка на переменную была равна "mat.link" в виде строки. Может кто-то помочь мне, пожалуйста? Спасибо

1 ответ

Решение

В вашем шаблоне '{{mat.link}}' это строка Если вы хотите значение mat.link, вы должны использовать его в качестве переменной.

{{ formDownload.link(value=mat.link) }}
Другие вопросы по тегам