python - “FloatField”类未定义“__truediv__”
问题描述
当我尝试获取用于计算的“身高”和“体重”变量的值时,在第 8 行出现错误:
'Class 'FloatField' 没有定义 ' truediv ',因此不能在其实例上使用 '/' 运算符。此检查检测应解析但未解析的名称。由于动态调度和鸭子类型,这在有限但有用的情况下是可能的。比实例项目更好地支持顶级和类级项目。
这些表单用于存储到数据库(持久性/搁置)并显示所有值。我已经能够存储和显示“身高、体重和身份证”变量,但我在尝试添加“bmi”变量时陷入了困境。
from wtforms import Form, StringField, validators, SubmitField,
FloatField
class AddRecordForm(Form):
id = StringField('User', [validators.DataRequired()])
height = FloatField('Height in meters (e.g 1.75)', [validators.Length(min=4, max=4), validators.DataRequired()])
weight = FloatField('Weight in kilograms', [validators.Length(min=1), validators.DataRequired()])
bmi = weight/height*height
submit = SubmitField("Update/Add your Health Information")
我想要做的是使用变量'height'和'weight'的输入值来计算'bmi'
解决方案
表单提供最高级别的 API。它们包含您的字段定义、委托验证、接受输入、汇总错误,并且通常用作将所有内容粘合在一起的粘合剂。
为了从表单中获取输入并在应用程序中使用它,您需要在模板中呈现表单实例并在视图函数部分中计算值。
from wtforms import Form, StringField, validators, SubmitField, FloatField
class AddRecordForm(Form):
id = StringField('User', [validators.DataRequired()])
height = FloatField('Height in meters (e.g 1.75)', [validators.Length(min=4, max=4), validators.DataRequired()])
weight = FloatField('Weight in kilograms', [validators.Length(min=1), validators.DataRequired()])
submit = SubmitField("Update/Add your Health Information")
#Some thing like this must be your View function part
from flask import flash, redirect, url_for, session, render_template
app = Flask(__name__)
@app.route('/bmi', methods=['GET', 'POST'])
def bmi():
form = AddRecordForm()
if form.validate_on_submit():
height = form.height.data
weight = form.weight.data
bmi = weight/height*height
#Do database operations here
for field, errors in AddRecordForm().errors.items():
for error in errors:
flash(u"Error in the %s field - %s" % (getattr(form, field).label.text, 'error'))
return render_template('bmi.html', form=form)
现在在目录bmi.html
内的模板中将您templates
的表单呈现为:
<form action="" method="post">
{{ form.hidden_tag() }}
<p>
{{ form.id.label }}<br>
{{ form.id }}
</p>
<p>
{{ form.height.label }}<br>
{{ form.height }}
</p>
<p>
{{ form.weight.label }}<br>
{{ form.weight}}
</p>
<p>{{ form.submit }}</p>
</form>
推荐阅读
- angular - 如何在 Angular 5 中执行缓存 http get 请求?
- node.js - 如何让多个用户使用单一路由登录
- dialogflow-es - Dialogflow v2 Beta 1 使用 Python 更新意图
- java - TableRow 在 TableLayout 中返回空值?
- sql - SQL 乘以 AVG
- java - 下拉单击时 Android Webview 崩溃
- image-processing - Keras ImageDataGenerator 将值重新缩放为 [-0.5, 0.5]
- python - project euler #4 使用 python 的最大回文
- javascript - 如何使用单个键盘快捷键复制和粘贴 Electron 中的文本?
- javascript - 导入到 vue.js 组件中