URL_for在烧瓶蓝图中找不到其他视图



我正试图将我的flask网站划分为多个文件,所以我在一个文件中创建了蓝图,我可以直接导入main。然而,当我尝试运行它时,它会找到第一个视图(chess_home(,但当我提交时,它找不到下一个视图(象棋(。特别是URL_For函数不起作用,当我只是手动将所有信息输入浏览器时,它就起作用了。

openings_guru = Blueprint('openings_guru', __name__, template_folder='templates')
@openings_guru.route("/chess/", methods=['POST', 'GET'])
def chess_home():
if request.method == "POST":
id = request.form["id"]
color = request.form["color"]
months = request.form['months']
sort = request.form['sort']
return redirect(url_for("chess", id=id, color=color, months=months, sort=sort))
else:
return render_template("chess.html")

@openings_guru.route("/chess/<id>/<color>/<months>/<sort>/")
def chess(id, color, months, sort):
[2021-05-08 12:33:16,332] ERROR in app: Exception on /chess/ [POST]
Traceback (most recent call last):
File "/Users/mattb/miniconda3/envs/b529/lib/python3.7/site-packages/flask/app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "/Users/mattb/miniconda3/envs/b529/lib/python3.7/site-packages/flask/app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/mattb/miniconda3/envs/b529/lib/python3.7/site-packages/flask/app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/mattb/miniconda3/envs/b529/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/Users/mattb/miniconda3/envs/b529/lib/python3.7/site-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/mattb/miniconda3/envs/b529/lib/python3.7/site-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/mattb/PycharmProjects/website/chess.py", line 59, in chess_home
return redirect(url_for("chess", id=id, color=color, months=months, sort=sort))
File "/Users/mattb/miniconda3/envs/b529/lib/python3.7/site-packages/flask/helpers.py", line 370, in url_for
return appctx.app.handle_url_build_error(error, endpoint, values)
File "/Users/mattb/miniconda3/envs/b529/lib/python3.7/site-packages/flask/app.py", line 2216, in handle_url_build_error
reraise(exc_type, exc_value, tb)
File "/Users/mattb/miniconda3/envs/b529/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/Users/mattb/miniconda3/envs/b529/lib/python3.7/site-packages/flask/helpers.py", line 358, in url_for
endpoint, values, method=method, force_external=external
File "/Users/mattb/miniconda3/envs/b529/lib/python3.7/site-packages/werkzeug/routing.py", line 2179, in build
raise BuildError(endpoint, values, method, self)
werkzeug.routing.BuildError: Could not build url for endpoint 'chess' with values ['color', 'id', 'months', 'sort']. Did you mean 'home' instead?

当我们使用蓝图时,我们还需要更改url_fo函数,例如:url_for("chess")变成url_for("Chess.chess"),其中Chess是蓝图的名称。

最新更新