在 FlaskForm (WTForms) 中传递并使用变量

2024-05-05

该代码非常不言自明 - 我想将一个变量传递给FlaskForm子类以供进一步使用。

from flask import Flask, render_template_string
from flask_wtf import FlaskForm
from wtforms import StringField
from flask_wtf.csrf import CSRFProtect


app = Flask(__name__)
spam = 'bar'
app.secret_key = 'secret'
csrf = CSRFProtect(app)

@app.route('/')
def index():
    eggs = spam
    form = FooForm(eggs)
    return render_template_string(
    '''
    {{ form.bar_field.label }} {{ form.bar_field }}
    ''',form = form)

class FooForm(FlaskForm):
    def __init__(self, bar):
        super(FooForm, self).__init__()
        self.bar = bar
    bar_field = StringField("Label's last word is 'bar': {0}".format(self.bar))

if __name__ == '__main__':
    app.run(debug=True)

我得到的是

line 22, in FooForm
    bar_field = StringField("Label's last word is 'bar': {0}".format(self.bar))
NameError: name 'self' is not defined

我怎样才能达到想要的效果?


我遇到了与此非常相似的问题,我花了一段时间才弄清楚。你想做的事情可以这样完成:

from wtforms.fields.core import Label

class FooForm(FlaskForm):
    bar_field = StringField("Label does not matter")


@app.route('/')
def index():
    eggs = 'bar'
    form = FooForm()
    form.bar_field.label = Label("bar_field", "Label's last word is 'bar': {0}".format(eggs))

    return render_template_string(
    '''
    {{ form.bar_field.label }} {{ form.bar_field }}
    ''',form = form)

请参阅我在这里提出的问题及其答案:Flaskform 传递变量 (WTForms) https://stackoverflow.com/questions/51181324/flaskform-pass-a-variable-wtforms/51181817#51181817

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 FlaskForm (WTForms) 中传递并使用变量 的相关文章

随机推荐