Как установить фиксированное значение поля как url_for('blueprint.route')

class GuideForms(FlaskForm):
  FileField = FileField('FileField')
  FileFiled_hidden = HiddenField()
  text = HiddenField()

  text.data = url_for('admin.gen')

Приведенный выше код приводит к этой ошибке:

«Попытка сгенерировать URL-адрес без контекста приложения» RuntimeError: Попытка сгенерировать URL-адрес без отправки контекста приложения. Это должно выполняться, когда доступен контекст приложения.

Есть ли способ определить фиксированное значение поля (текста) как url_for?


person Fabiano Soder    schedule 15.10.2019    source источник


Ответы (2)


Как я вижу, python генерирует свои формы перед маршрутами. Таким образом, в принципе невозможно определить значение формы как url_for('blueprint.route').

Обходной путь, который вы должны сделать: Установите значение для form.field.data, когда форма используется в маршруте.

@blueprint.route("/upload")
def upload():
  form = GuideForms()
  form.text.data = url_for('admin.gen')
person Fabiano Soder    schedule 15.10.2019

Вы можете сделать это при создании экземпляра этой формы, попробуйте,

class GuideForms(FlaskForm):
   FileField = FileField('FileField')
   FileFiled_hidden = HiddenField()
   text = HiddenField()

   def __init__(self, , *args, **kwargs):
       super(GuideForms, self).__init__(*args, **kwargs)
       text.data = url_for('admin.gen')

И убедитесь, что вы создали экземпляр этой формы, когда есть контекст приложения

person Sujan Adiga    schedule 15.10.2019