【问题标题】:How to set a fixed field value as a url_for('blueprint.route')如何将固定字段值设置为 url_for('blueprint.route')
【发布时间】:2019-10-15 17:34:33
【问题描述】:
class GuideForms(FlaskForm):
  FileField = FileField('FileField')
  FileFiled_hidden = HiddenField()
  text = HiddenField()

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

上面的代码导致这个错误:

“试图在没有应用程序上下文的情况下生成 URL” RuntimeError:尝试在未推送应用程序上下文的情况下生成 URL。这必须在应用程序上下文可用时执行。

有没有办法将字段(文本)的固定值定义为 url_for?

【问题讨论】:

    标签: python flask flask-wtforms url-for


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-23
        • 2016-09-14
        • 1970-01-01
        • 2022-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多