如何将固定字段值设置为url_for('blueprint.route')

时间:2019-10-15 17:34:33

标签: python flask flask-wtforms url-for

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

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

上面的代码导致此错误:

  

“尝试在没有应用程序上下文的情况下生成URL”   RuntimeError:尝试在不推送应用程序上下文的情况下生成URL。当应用程序上下文可用时,必须执行此操作。

是否可以将字段(文本)的固定值定义为url_for?

2 个答案:

答案 0 :(得分:0)

如我所见,python在其路由之前生成其形式。因此,将表单值定义为url_for('blueprint.route')基本上是不可能的。

您必须执行的解决方法是: 在路由中使用表单时,为form.field.data设置一个值。

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

答案 1 :(得分:0)

您可以在创建此表单的实例时执行此操作, 尝试,

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')

并确保在存在应用程序上下文时创建此表单的实例