Flask WTF(Python)sizevalying不工作的字段列表列表(未绑定错误)

2024-10-06 11:22:50 发布

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

我正在尝试做一个不确定性计算器,我需要一个可变数量的字段(这是最后的想法)。然而,在测试1个字段的数量时,我遇到了一个问题。没有在页面中呈现字段,而是在其位置上只有一些随机代码:

Result of the code below

我试着检查这个问题是否与他们有着相同的名字“值”或其他什么有关,但似乎不是问题所在。我不知道该怎么做了。在

在表单.py在

from flask.ext.wtf import Form
from wtforms import StringField, BooleanField, DecimalField
from wtforms.validators import DataRequired

class Receiver(Form):
    expression = StringField('expression', validators=[DataRequired()])
    # ve_list = [[StringField('expreson'), DecimalField('expression', places=10)], [StringField('expreson'), DecimalField('expression', places=10)]]
    # remember_me = BooleanField('remember_me', default=False)

    ve_list = [[DecimalField('value', validators=[DataRequired()]), DecimalField('value', validators=[DataRequired()])]]

在视图.py公司名称:

^{pr2}$

在请求.html公司名称:

{% block content %}
  <h1>Error propagation calculator</h1>
  <form action="" method="post" name="login">
      {{ form.hidden_tag() }}
      <p>
          Please enter the expression:<br>
          {{ form.expression }}<br>
      </p>
          Enter the value and respective error:<br>
          {% for ve in form.ve_list %}
          {{ ve[0] }} +/- {{ ve[1] }}<br>
          {% endfor %} 
      <p><input type="submit" value="Calculate"></p>
  </form>
{% endblock %}

Tags: frompybrimportform数量valueve
2条回答

字段是类,需要调用它们才能运行它们的调用方法,该方法将html呈现到页面中。在

例1:

{{ form.expression() }}

您的场正在渲染,但最好正确调用该场。在

编辑时间:

您的字段列表将无法工作,因为您需要将实例化的类附加到表单类属性。当您像这样加载字段时,它是一个未绑定的字段。在

unboundfield

我建议在视图中动态添加字段。你可以看到这个问题的答案here。在

作为表单一部分的字段必须是表单类的类变量。如果没有,那么WTForms就找不到它们,因此它们永远不会绑定到表单。在

如果要添加字段列表,可以通过设置窗体类上的属性来实现。像这样:

class Receiver(Form):
    expression = StringField('expression', validators=[DataRequired()])

setattr(Receiver, 've_list0', DecimalField('value', validators=[DataRequired()]))
setattr(Receiver, 've_list1', DecimalField('value', validators=[DataRequired()]))

然后在模板中,可以迭代表单字段来呈现它们,而不是逐个呈现它们。在

相关问题 更多 >