我的目的是用动态提供的标签构造一个表单,并在Jinja表单中使用它。这让我发现了许多基本问题。 就像这里的例子一样
from flask_wtf import FlaskForm
from wtforms import SubmitField
from wtforms.validators import DataRequired
class LoginForm(FlaskForm):
# submit = SubmitField('Go On')
def __init__(self, BtnLble):
self.submit = SubmitField(BtnLble,form=self, name="MySbmt", _meta=self.Meta)
# self.submit.bind(form=self, name="MySbmt", _meta=self.Meta)
super(LoginForm,self).__init__()
self.submit() # .__call__() does not exist
def UseForm( ) :
Login = LoginForm(“Hit here”)
if form.validate_on_submit():
flash('Wellcom... ' )
return redirect(url_for(‘GoOn’))
return render_template('Login.html', **locals())
我尝试在form类的\uu init \uuuuu部分“动态”构造窗体。似乎元素的构造(在示例中放入注释)与声明部分中的构造不同
在上面的示例中,调用“submit()”的结果是“Non callable object”。而只有在申报部分申报才有可能! 因此,我们想到以下问题:
1)在声明部分的声明和在初始化中的声明有什么区别。我们不是在用“静态”变量!你知道吗
2)如何使“窗体字段”可调用?你知道吗
3)似乎只有在烧瓶窗体的发起方调用之后,可调用性才变得存在。它如何将“方法”添加到此对象?你知道吗
我注意到其他有经验的开发人员也提出了类似的问题,但他们并没有像这样简单地提供这些问题
WTForms keeps giving "Not Callable" error during server run, but not on the python prompt
wtforms.Form
类中的字段由wtforms.forms.FormMeta
元类设置。当窗体实例的__init__
方法被调用时,向窗体添加新字段为时已晚。你知道吗您可以动态修改窗体类,如documentation中所述。请注意,这将影响该类的所有未来实例。你知道吗
如果您只想为特定实例中的字段自定义标签,可以在实例的
__init__
方法中进行。你知道吗相关问题 更多 >
编程相关推荐