使Flask路线“掉线”到另一Flask路线的最佳方法是什么?

时间:2018-08-17 08:36:07

标签: python flask

我有两条烧瓶路线。

@app.route("/")
def root():
    return render_template("/login.html")

@app.route("/login")
def login():
    return render_template("/login.html")

我想让root()自动返回login()返回的值,而不是上面的代码,因此,如果我在login()中进行了更改,则不必root()中的相同更改。明显的方法是

def root():
    return login()

但这似乎不对,因为login实际上不是login,所以它是用login装饰器包裹的app.route。这会引起问题吗?

另一种方法是使用redirect,但我不想让用户对后端可以处理的内容提出不必要的额外HTTP请求。

另一种方法是将login函数同时分配给//login路由,但假设我想为某些路由使用单独的root()函数原因,可能是因为它使以后更容易更改/路由,或者是因为我想在呈现登录页面之前进行一些初始设置。

最惯用的方法是什么?

2 个答案:

答案 0 :(得分:1)

要创建“后备”路由,即当没有其他更具体的路由匹配时将调用的路由。

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def root(path):
    return render_template("/login.html")

答案 1 :(得分:0)

在根函数中创建if语句,以检查用户是否已登录,如果没有登录,然后重定向到登录路径?

除此之外,我认为所有选项都已提及。