Flask wtforms - 'UnboundField' 对象不可调用,动态字段无法正确初始化
Flask wtforms - 'UnboundField' object is not callable, dynamic field won't init properly
app.py
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField, FieldList, FormField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'apple pie'
class BookForm(FlaskForm):
book = StringField('book title')
class LibraryForm(FlaskForm):
def __init__(self, min_entries=0, *args, **kwargs):
super(LibraryForm, self).__init__(*args, **kwargs)
self.books = FieldList(FormField(BookForm), min_entries=min_entries)
library = StringField('Library name')
books = FieldList(FormField(BookForm), min_entries=3)
submit = SubmitField('Submit')
@app.route('/book', methods=['GET', 'POST'])
def book():
form = LibraryForm(min_entries=5)
if form.validate_on_submit():
return 'aww yeah'
return render_template('books.html', form=form)
books.html
<html>
<form method="POST" action="">
{{ form.hidden_tag() }}
<div>{{ form.library.label }}: {{ form.library() }}</div>
<div>{{ form.books.label }}: {{ form.books() }}</div>
<div>{{ form.submit.label }}: {{ form.submit() }}</div>
</html>
我的目标是让我的表单初始化时包含灵活数量的条目,例如 link 中所示的示例。每当我 运行 我的代码时,我都会收到以下错误:
TypeError: 'UnboundField' object is not callable
当我注释掉 init 函数时,表单按预期工作,除了不灵活的 Book Fields 数量。我花了很多时间寻找答案,但找不到任何解决问题的方法。
example of how it should look
感谢任何帮助!
这不是理想的解决方案,但它确实有效。
from flask import Flask, render_template
from flask_wtf import FlaskForm, Form
from wtforms import StringField, SubmitField, FieldList, FormField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'apple pie'
class BookForm(FlaskForm):
book = StringField('book title')
class LibraryForm(FlaskForm):
library = StringField('Library name')
books = FieldList(FormField(BookForm))
submit = SubmitField('Submit')
@app.route('/book', methods=['GET', 'POST'])
def book():
form = LibraryForm()
if form.validate_on_submit():
return 'aww yeah'
for i in range(6):
form.books.append_entry()
return render_template('books.html', form = form)
app.py
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField, FieldList, FormField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'apple pie'
class BookForm(FlaskForm):
book = StringField('book title')
class LibraryForm(FlaskForm):
def __init__(self, min_entries=0, *args, **kwargs):
super(LibraryForm, self).__init__(*args, **kwargs)
self.books = FieldList(FormField(BookForm), min_entries=min_entries)
library = StringField('Library name')
books = FieldList(FormField(BookForm), min_entries=3)
submit = SubmitField('Submit')
@app.route('/book', methods=['GET', 'POST'])
def book():
form = LibraryForm(min_entries=5)
if form.validate_on_submit():
return 'aww yeah'
return render_template('books.html', form=form)
books.html
<html>
<form method="POST" action="">
{{ form.hidden_tag() }}
<div>{{ form.library.label }}: {{ form.library() }}</div>
<div>{{ form.books.label }}: {{ form.books() }}</div>
<div>{{ form.submit.label }}: {{ form.submit() }}</div>
</html>
我的目标是让我的表单初始化时包含灵活数量的条目,例如 link 中所示的示例。每当我 运行 我的代码时,我都会收到以下错误:
TypeError: 'UnboundField' object is not callable
当我注释掉 init 函数时,表单按预期工作,除了不灵活的 Book Fields 数量。我花了很多时间寻找答案,但找不到任何解决问题的方法。
example of how it should look
感谢任何帮助!
这不是理想的解决方案,但它确实有效。
from flask import Flask, render_template
from flask_wtf import FlaskForm, Form
from wtforms import StringField, SubmitField, FieldList, FormField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'apple pie'
class BookForm(FlaskForm):
book = StringField('book title')
class LibraryForm(FlaskForm):
library = StringField('Library name')
books = FieldList(FormField(BookForm))
submit = SubmitField('Submit')
@app.route('/book', methods=['GET', 'POST'])
def book():
form = LibraryForm()
if form.validate_on_submit():
return 'aww yeah'
for i in range(6):
form.books.append_entry()
return render_template('books.html', form = form)