我有这两个表单出现在一个页面上(dashboard.html
)
# Forms.py
class Area(Form):
title = TextField("Title", [validators.Required("Please enter an Area Title")])
text = TextAreaField("Text (max 50 characters)",[validators.Required("Please enter an Area text"),validators.Length(max=50,message="Area text cannot be more than 50 characters")])
class Message(Form):
Message_title = TextField("Title", [validators.Required("Please enter a Message Title")])
Message_Date_and_Time = DateTimeField("Date and Time")
我正在尝试创建3个视图来处理所有情况:
dashboard.html
([GET])Area
表单时(因此根据验证获取验证或错误消息)([POST])Message
表单时(因此根据验证获取验证或错误消息)([POST])为此,我有以下代码:
@app.route('/dashboard.html')
def dashboard():
return render_template('dashboard.html',form= Area(),M_form = Message())
@app.route('/Area',methods=['POST'])
def Area():
return render_template('dashboard.html', form= Area(), M_form=Message())
@app.route('/Message',methods=['POST'])
def Area():
return render_template('dashboard.html', form= Area(), M_form=Message())
但是当我尝试加载这3个视图中的任何一个时,我收到RuntimeError: maximum recursion depth exceeded
错误并且回溯是
return self.view_functions[rule.endpoint](**req.view_args)
...., line 24, in dashboard
return render_template('dashboard.html', form= Area(), M_form = Message())
...., line 31, in Area
return render_template('dashboard.html', form= Area(), N_form = Message())
...., line 31, in Area
return render_template('dashboard.html', form= Area(), N_form = Message())
同样的错误一次又一次,直到达到时钟限制。
当我只使用信息中心视图时(在从代码中完全删除/Area
和/Message
视图后),它的工作正常。我得到了dashboard.html
。
我一直在四处寻找,我找不到runtimeerror: maximum recursion
和表格或WTforms之间的任何联系。它似乎总是与一个没有正确关闭的循环有关但在这里我没有循环。我看不出它的来源。
答案 0 :(得分:1)
Area
表单和视图函数(/Area
和/Message
)具有相同的名称。您正在获取递归深度错误,因为在视图函数名称Area
内,您再次调用Area()
来生成表单,而是无限地在递归中回调视图函数。
@app.route('/Area',methods=['POST'])
def Area():
# Area() is called below and it refers to this view function itself
# that was just declared above.
return render_template('dashboard.html', form= Area(), M_form=Message())
将视图函数的名称更改为不同且唯一的名称。