python - URL_for 在烧瓶蓝图中找不到其他视图
问题描述
我正在尝试将我的烧瓶网站分成多个文件,因此我在一个文件中创建了蓝图,我可以将其导入 main. 但是,当我尝试运行它时,它会找到第一个视图(chess_home),但是当我提交时,它找不到下一个视图(chess)。特别是 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_for 函数,例如:url_for("chess")
变为url_for("Chess.chess")
where Chess 是蓝图的名称。
推荐阅读
- json - 从 JSON blob 读取 unicode 文本时遇到问题。如何才能做到这一点?
- sparql - 在 Sparql 中查询距离单位 - Wikidata 示例
- visual-studio - Visual Studios Add on ToolWindowControl 在哪里保存用户设置?
- flatbuffers - 使用 flatbuffers 结构作为键
- html - 使用 CSS Grid 的动态高度
- onedrive - 使用 Microsoft OneDrive REST API 时身份验证令牌无效
- laravel - 如何使用刀片模板中的类?
- android - 时间选择器对话框不显示
- azure - 选择哪个 Azure 消息传递服务以向不同订阅者发布不同的消息?
- android - Kotlin Android Extensions 替换 findViewById 如何防止空视图?