我的Flask应用程序有一个HTML表单,其中包含一个textarea但是,用户可以按下一个按钮,在表单中添加另一个textarea来创建无限量的textareas。
由于我没有使用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>
所以在我的情况下,我在开头也有一个输入,我想验证。我还要验证所有textareas,以便它们不被允许为空。
我想用WTForms来验证这个,但是要用WTForms创建一个表单,它必须用Python创建然后用HTML呈现。由于textareas被添加到表单中,因此无法验证它们,因为它们未在python代码中定义以创建WTForms。
问题是,我希望能够将表单元素添加到使用WTForms创建的表单中。
答案 0 :(得分:0)
我解决这个问题的方法是使用WTForms验证<input type=text>
,然后使用简单的flash()
消息作为textareas,如果它们是空的。
@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