分开Flask `app.route` 块

0 投票
1 回答
1402 浏览
提问于 2025-04-20 19:17

我在使用 Flask 的时候,有一个 route 路由功能,但随着我应用的不断构建,链接变得越来越多,搞得很乱。

如果我想把这些路由分开或者分组到一个单独的文件里,我该怎么做呢?

@app.route('/', methods=['GET'])
def index():
    return render_template('index.html')


@app.route('/mylink', methods=['GET'])
def get_mylink():
    return render_template('mylink.html')

或者,有没有办法把 route 路由进行 package 尺寸的管理呢?比如说,

import myrouter
myrouter.Run()

1 个回答

1

当我的应用变得越来越复杂时,我把路由和功能分成了不同的文件,但并不是完全按照你所建议的那样。

如果你的应用遵循典型的包结构,比如有一个首页和一个博客页面:

/app
  /templates
    /blog.html
    /index.html
  /__init__.py
  /models.py
  /views.py

那么你可以考虑把 views.py 文件变成一个叫 views 的文件夹,并在这个文件夹里为每一组相关的路由创建一个 .py 文件。例如:

/app
  /templates
    /blog.html
    /index.html
  /views
    /blog.py
    /main.py
  /__init__.py
  /models.py

你只需要把每组 @app.route() 装饰器和对应的函数放到合适的文件里。所以对于首页,你可以把这个和其他一些通用的路由(比如登录/登出)放到

@app.route('/', methods=['GET'])
def index():
    return render_template('index.html')

views 文件夹里的 main.py 文件中。你需要在 app/__init__.py 中导入这些内容,使用 from app.views import main, blog。别忘了在 views 文件夹里放一个空的 __init__.py 文件。

撰写回答