Flask RUTIMERROR创建视图时超出最大递归深度

Flask RUTIMERROR创建视图时超出最大递归深度,flask,wtforms,flask-wtforms,Flask,Wtforms,Flask Wtforms,我有两个表单出现在一个页面上(dashboard.html) 我尝试创建3个视图来处理所有情况: 当我最初进入页面时显示dashboard.html([GET]) 当用户发送区域表单时(因此他根据验证获得验证或错误消息)([POST]) 当用户发送消息表单时(因此他根据验证获得验证或错误消息)([POST]) 为此,我有以下代码: @app.route('/dashboard.html') def dashboard(): return render_template('dashbo

我有两个表单出现在一个页面上(
dashboard.html

我尝试创建3个视图来处理所有情况:

  • 当我最初进入页面时显示
    dashboard.html
    ([GET])
  • 当用户发送
    区域
    表单时(因此他根据验证获得验证或错误消息)([POST])
  • 当用户发送
    消息
    表单时(因此他根据验证获得验证或错误消息)([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个视图中的任何一个时,我得到了一个
运行时错误:超过了最大递归深度
错误,并且回溯是错误的

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())  
一次又一次地重复相同的错误,直到达到其时钟极限

当我只使用dashboard视图时(从代码中删除
/Area
/Message
两个视图之后),它工作得很好。我得到了我的
dashboard.html


我一直在四处寻找,在
运行时错误:最大递归
和表单或WTforms之间找不到任何联系。它似乎总是和一个没有正确闭合的循环有关,但这里我没有循环。我看不出它是从哪里来的。

您对
区域
表单和视图函数有相同的名称(
/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())
将视图函数的名称更改为不同且唯一的名称

@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())