具有可变数量文本区域的 WTForms
WTForms with a variable amount of textareas
我的 Flask 应用程序有一个 HTML 表单,其中包含一个文本区域,但是,用户可以按下一个按钮,将另一个文本区域添加到表单以创建无限数量的文本区域。
因为我没有使用 WTForms,所以验证要困难得多,所以我在客户端使用 Javascript 完成了验证,但是任何具有编程技能的人都可以编辑此代码,这是不安全的。我更愿意使用 WTForms 验证表单。
这甚至可以用 WTForms 和 Flask 来做,还是我必须用 Flask 创建自己的方法并闪烁消息来验证表单?谢谢
编辑:
HTML:
<form id="myForm">
<input type="text">
<textarea></textarea>
<textarea></textarea>
</form>
<button onclick="add()">Add textarea</button>
<script>
function add() {
var textarea = document.createElement('textarea');
document.getElementById('myForm').appendChild(textarea);
}
</script>
所以在我的例子中,我在开始时也有一个我想要验证的输入。我还想验证所有文本区域,以便它们不允许为空。
我想用 WTForms 验证这一点,尽管要用 WTForms 创建一个表单,它必须在 Python 中创建,然后在 HTML 中呈现。由于将文本区域添加到表单,因此无法对其进行验证,因为它们未在创建 WTForms 的 python 代码中定义。
问题是,我希望能够将表单元素添加到使用 WTForms 创建的表单中。
我解决这个问题的方法是使用 WTForms 验证 <input type=text>
,然后在文本区域为空时使用简单的 flash()
消息。
@app.route('/form')
def form():
form = some_form()
if request.method == 'POST':
newQuestions = []
i = 1
alreadyBlank = False
while True:
try:
question = request.form['question' + str(i)]
if question.strip(' \t\n\r') == '' and not alreadyBlank
flash('Please don\'t leave any questions blank.')
alreadyBlank = True
newQuestions.append(question)
i += 1
except:
break
if form.validate_on_submit():
input_content = form.input.data
我的 Flask 应用程序有一个 HTML 表单,其中包含一个文本区域,但是,用户可以按下一个按钮,将另一个文本区域添加到表单以创建无限数量的文本区域。
因为我没有使用 WTForms,所以验证要困难得多,所以我在客户端使用 Javascript 完成了验证,但是任何具有编程技能的人都可以编辑此代码,这是不安全的。我更愿意使用 WTForms 验证表单。
这甚至可以用 WTForms 和 Flask 来做,还是我必须用 Flask 创建自己的方法并闪烁消息来验证表单?谢谢
编辑:
HTML:
<form id="myForm">
<input type="text">
<textarea></textarea>
<textarea></textarea>
</form>
<button onclick="add()">Add textarea</button>
<script>
function add() {
var textarea = document.createElement('textarea');
document.getElementById('myForm').appendChild(textarea);
}
</script>
所以在我的例子中,我在开始时也有一个我想要验证的输入。我还想验证所有文本区域,以便它们不允许为空。
我想用 WTForms 验证这一点,尽管要用 WTForms 创建一个表单,它必须在 Python 中创建,然后在 HTML 中呈现。由于将文本区域添加到表单,因此无法对其进行验证,因为它们未在创建 WTForms 的 python 代码中定义。
问题是,我希望能够将表单元素添加到使用 WTForms 创建的表单中。
我解决这个问题的方法是使用 WTForms 验证 <input type=text>
,然后在文本区域为空时使用简单的 flash()
消息。
@app.route('/form')
def form():
form = some_form()
if request.method == 'POST':
newQuestions = []
i = 1
alreadyBlank = False
while True:
try:
question = request.form['question' + str(i)]
if question.strip(' \t\n\r') == '' and not alreadyBlank
flash('Please don\'t leave any questions blank.')
alreadyBlank = True
newQuestions.append(question)
i += 1
except:
break
if form.validate_on_submit():
input_content = form.input.data