Максимальная глубина рекурсии rutimeerror превышена при создании представления
У меня есть эти 2 формы, которые появляются на одной странице (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. Кажется, что он всегда связан с не правильно замкнутым циклом, но здесь у меня нет цикла. Я не вижу, откуда это.
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())
Измените имена функций представления на что-то другое и уникальное.