【问题标题】: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')
并确保在存在应用程序上下文时创建此表单的实例