我试图用验证器在同一个烧瓶页面上设置两个不同的表单,但它总是告诉我我的表单没有定义。我得到错误:
该代码的设计允许用户输入一个数字,并检查它是否充足、完美或不足,然后用一个单独的表单允许用户定义一个范围,并得到该范围内有多少个富足、完美或不足的数字。在
我的代码如下:
from flask import Flask, render_template, request
from flask_wtf import Form
from wtforms import IntegerField
from wtforms.validators import InputRequired
from perfect_numbers import classify, listInRange
app = Flask(__name__)
app.config['SECRET_KEY'] = 'DontTellAnyone'
class PerfectForm(Form):
inputNumber = IntegerField('input a number', default=1, validators=[InputRequired(message='Please input an integer')])
class PerfectRangeForm(Form):
startNumber = IntegerField('input a number', default=1, validators=[InputRequired(message='Please input an integer')])
endNumber = IntegerField('input a number', default=1, validators=[InputRequired(message='Please input an integer')])
@app.route('/', methods=['GET', 'POST'])
def index():
form1 = PerfectForm(request.form, prefix="form1")
num = 1
Classify = classify(num)
if form.validate_on_submit() and form.data:
num = request.form1['inputNumber']
Classify = classify(form1.inputNumber.data)
return render_template('index.html', form1=form1, num=num, classify=Classify)
return render_template('index.html', num=1, form1=form1, classify=Classify)
@app.route('/aliRange', methods=['GET', 'POST'])
def aliRange():
form2 = PerfectRangeForm(request.form2, prefix="form2")
startNumber = 1
endNumber = 1
aliquot = 'abundant'
Classify = classify(num)
ListInRange = listInRange(startNumber, endNumber, aliquot)
if form2.validate_on_submit() and form2.data:
startNumber = request.form2['startNumber']
endNumber = request.form2['endNumber']
aliquot = request.form2['aliquot']
ListInRange = listInRange(startNumber, endNumber, aliquot)
return render_template('index.html', form2=form2, startNumber=startNumber, endNumber=endNumber, ListInRange=listInRange)
return render_template('index.html', form2=form2, startNumber=startNumber, endNumber=endNumber, ListInRange=listInRange)
if __name__ == '__main__':
app.run(debug=True)
在索引.html公司名称:
^{pr2}$获取atm的错误是:AttributeError:“Request”对象没有属性“form1”
编辑:
您可以使用单个视图简化代码,使用
submit
值来区分第一个表单和第二个表单的处理。在修改后的代码为:
修改后的模板
^{pr2}$index.html
是:旧版:
您在模板中使用
form1
,但在模板上下文中传递form
:您可以在模板内将
form1
更改为form
,也可以在上面的行中传递form1=form1
。在如果在同一模板中呈现多个表单,则必须传递所有相应的表单变量:
form1
,form2
。。。从渲染该模板的所有视图。否则,模板呈现将引发您看到的错误。在如果您对在模板内所有可能的表单中呈现一个表单感兴趣,可以使用
另外,你的html在我看来是不正确的,因为你有一个表单嵌套在另一个表单中。不知道你想在那里得到什么。在
相关问题 更多 >
编程相关推荐