文本区域数量可变的WTForms

2024-06-11 14:08:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Flask应用程序有一个HTML表单,其中包含一个textarea,但是用户可以按一个按钮,将另一个textarea添加到表单中,以创建无限多的textarea。你知道吗

由于我没有使用WTForms,验证要困难得多,因此我在客户端使用Javascript进行验证,但是任何有编程技能的人都可以编辑这段代码,这是不安全的。我更喜欢用WTForms验证表单。你知道吗

这甚至可以用WTForms和Flask实现,还是我必须用Flask和flash消息创建自己的方法来验证表单?谢谢。你知道吗

编辑:

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>

所以在我的例子中,我在开始的时候也有一个输入,我想验证一下。我还要验证所有textarea,以便它们不允许为空。你知道吗

我想用WTForms来验证这一点,但是要用WTForms创建表单,必须用Python创建,然后用HTML呈现。由于textarea被添加到表单中,因此无法验证它们,因为python代码中没有定义它们来创建WTForms。你知道吗

问题是,我希望能够将表单元素添加到使用WTForms创建的表单中。你知道吗


Tags: 代码用户formadd应用程序编辑flask表单
1条回答
网友
1楼 · 发布于 2024-06-11 14:08:15

我解决这个问题的方法是使用WTForms来验证<input type=text>,然后对textarea使用简单的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

相关问题 更多 >