我的登录页面为login.py
,呈现login.html
。在提交时,我想重定向到呈现mainpage.py
的{{1}}。但在提交时点击它只是没有重定向。我找不到页面错误。网址保持不变
mainpage.html
重定向选项应该提到什么?它是html文件名或py文件名,其中html被呈现?我尝试使用html filename,py filename和@ app.route中的名称。但没有成功
答案 0 :(得分:1)
当您重定向到/mainpage
时,Flask会在login.py
文件中寻找路由处理程序,而不是mainpage.py
。由于login.py
没有/mainpage
的路由处理程序,因此它会为您提供404.它永远不会达到mainpage.py
。
您要做的是将您的路线分隔成不同的文件。为此,您需要明确告诉 Flask您的路由处理程序(换句话说,它应该在哪些文件中寻找路由处理程序)。
有两种方法可以做到这一点:
请参阅此文档(Larger Applications)以了解如何将文件整理为一个包。您必须将mainpage.py导入login.py,反之亦然。
请注意,如果您的申请规模很大,您只需要这样做。如果您只有几个路由处理程序,那么您可能应该将所有内容保持在一个文件中。
答案 1 :(得分:0)
redirect
的第一个参数是您希望客户端重定向到的网址。您可以将url硬编码为第一个参数。此外,您还可以使用url_for
生成给定端点的网址。
例如:
@app.route("/url")
def endpoint():
return "Test redirect & url_for"
您可以使用redirect(url_for("endpoint"))
或redirect("/url")
重定向到/url
并Quickstart指出使用url_for
代替硬编码网址的优势。