Class 'FloatField' 没有定义 '__truediv__'
Class 'FloatField' does not define '__truediv__'
当我尝试获取用于计算的 'height' 和 'weight' 变量的值时,我在第 8 行遇到错误:
'Class 'FloatField' 没有定义 'truediv',因此不能在其实例上使用 '/' 运算符。此检查检测应解析但未解析的名称。由于动态调度和鸭子类型,这在有限但有用的情况下是可能的。顶级项目和 class 级项目比实例项目得到更好的支持。'
表格用于存储到数据库中 (Persistence/Shelve) 并显示所有值。我已经能够存储和显示 'height, weight and id' 变量,但我在尝试添加 '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)
现在,在 templates
目录中的 bmi.html
模板中,将表单呈现为:
<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>
我最终通过修改另一个文件中的 Class Record() 得到了它,我在该文件中创建了另一个数据属性 self.__bmi 并且我设法在函数 def [=21] 中完成了计算=]() 相反,总的来说我想显示的内容已经完成了
Record.py
class Record:
def __init__(self, height, weight, id):
self.__height = height
self.__weight = weight
self.__id = id
self.__bmi = (float(weight)/(float(height)*float(height)))
def get_height(self):
return self.__height
def get_weight(self):
return self.__weight
def get_id(self):
return self.__id
def get_bmi(self):
return self.__bmi
summary.html
{% extends 'sportshealth.html' %}
{% block header %}
<h1>{% block title %}Your health statistics!{% endblock %}</h1>
{% endblock %}
{% block content %}
<h1>These are your health statistics {{ name }}</h1>
<table style="width:50%">
<tr>
<th>ID</th>
<th>Height</th>
<th>Weight</th>
<th>BMI</th>
</tr>
{% for item in records %}
<tr>
<td>{{ item.get_id() }}</td>
<td>{{ item.get_height() }}</td>
<td>{{ item.get_weight() }}</td>
<td>{{ item.get_bmi() }}</td>
{% endfor %}
</table>
{% endblock %}
当我尝试获取用于计算的 'height' 和 'weight' 变量的值时,我在第 8 行遇到错误:
'Class 'FloatField' 没有定义 'truediv',因此不能在其实例上使用 '/' 运算符。此检查检测应解析但未解析的名称。由于动态调度和鸭子类型,这在有限但有用的情况下是可能的。顶级项目和 class 级项目比实例项目得到更好的支持。'
表格用于存储到数据库中 (Persistence/Shelve) 并显示所有值。我已经能够存储和显示 'height, weight and id' 变量,但我在尝试添加 '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)
现在,在 templates
目录中的 bmi.html
模板中,将表单呈现为:
<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>
我最终通过修改另一个文件中的 Class Record() 得到了它,我在该文件中创建了另一个数据属性 self.__bmi 并且我设法在函数 def [=21] 中完成了计算=]() 相反,总的来说我想显示的内容已经完成了
Record.py
class Record:
def __init__(self, height, weight, id):
self.__height = height
self.__weight = weight
self.__id = id
self.__bmi = (float(weight)/(float(height)*float(height)))
def get_height(self):
return self.__height
def get_weight(self):
return self.__weight
def get_id(self):
return self.__id
def get_bmi(self):
return self.__bmi
summary.html
{% extends 'sportshealth.html' %}
{% block header %}
<h1>{% block title %}Your health statistics!{% endblock %}</h1>
{% endblock %}
{% block content %}
<h1>These are your health statistics {{ name }}</h1>
<table style="width:50%">
<tr>
<th>ID</th>
<th>Height</th>
<th>Weight</th>
<th>BMI</th>
</tr>
{% for item in records %}
<tr>
<td>{{ item.get_id() }}</td>
<td>{{ item.get_height() }}</td>
<td>{{ item.get_weight() }}</td>
<td>{{ item.get_bmi() }}</td>
{% endfor %}
</table>
{% endblock %}