烧瓶捕捉和嵌套常见路线

Posted

技术标签:

【中文标题】烧瓶捕捉和嵌套常见路线【英文标题】:Flask catching and nesting common routes 【发布时间】:2020-10-09 14:06:31 【问题描述】:

有没有办法捕捉公共路线以防止重复装饰器(可能还有 url 参数)?

我目前的代码结构:

@app.route("/user")
@login_required

@app.route("/user/logout")
@login_required

@app.route("/user/profile")
@login_required

@app.route("/user/profile/settings")
@login_required

我希望它变成这样:

@app.route("/user")
@login required

if ("/logout"):
    return template 

elif ("/profile"):
    return template

elif ("/profile/settings"):
    return template

也许可以嵌套如下:

@app.route("/user")
@login required

if ("/logout"):
    if ("/"):
        return template

elif ("/profile"):
    if ("/"):
        return template
    elif ("/settings"):
        return template

【问题讨论】:

【参考方案1】:

您提到的方式是不可能的,但您可以使用蓝图使您的代码更干净和可读。观看 Corey MS 的这段视频,他以非常详细和精确的方式解释了这一点。 https://m.youtube.com/watch?v=Wfx4YBzg16s&list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH&index=12&t=0s

或者参考蓝图的官方文档: https://flask.palletsprojects.com/en/1.1.x/blueprints/

【讨论】:

以上是关于烧瓶捕捉和嵌套常见路线的主要内容,如果未能解决你的问题,请参考以下文章

react-router 未渲染的嵌套详细信息路由

Rails 4 [最佳实践] 嵌套资源和浅层:true

如何为嵌套资源丰富的路线制作更短的路径

NavLink 未填充嵌套路由的活动类

如何处理常见的JSON嵌套结构

我有3个嵌套路线:class / post / comments我不知道如何编写_form文件中的form_for