python - 传递并使用 FlaskForm (WTForms) 内的变量

标签 python variables flask wtforms

代码非常不言自明 - 我想将变量传递给 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 pass a variable (WTForms)

关于python - 传递并使用 FlaskForm (WTForms) 内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47621904/

相关文章:

python - django 上下文处理器 - 如何从一个函数返回所有内容?

python - 在不共享个人信息的情况下共享程序的正确方法是什么?

python - 如何在 Django 管理界面中仅显示组成员?

javascript - 函数中的变量范围

variables - Powershell - 尝试针对类似于变量名称的字符串测试路径

python - 由于 session 错误,无法从 SQLAlchemy 中删除行

jquery - PDF查询 : get Page number where element is located

javascript - 将 Javascript 变量传递给 createlink 方法调用 Grails

python - 在生产模式下在 Flask 中启用 Debug模式

docker - Kubernetes NodePort 不返回容器的响应