初学 Flask,如果不想把所有的 app route 写在一个文件里面,应该怎么做?

2015 年 5 月 27 日
 noli
譬如说,不同的功能模块自己定义不一样的路径,不要都写在 app.py 里面。
11642 次点击
所在节点    Flask
9 条回复
zeayes
2015 年 5 月 27 日
blueprint
sirgod
2015 年 5 月 27 日
用blueprint吧
crazyxin1988
2015 年 5 月 27 日
可以单独 views.py 放 route
如果再多 可以view包
或者 blueprint
noli
2015 年 5 月 27 日
非常感谢以上回复。最后找到了 blueprints 是怎么用的。

总结一下,我正在做一个 restful 的 api server。

`app.py` 里面 是这么初始化的。

```
from app.v0.likes import likes

def configure_app():
flask_app = Flask(__name__)
flask_app.register_blueprint(likes, url_prefix='/api/v0/likes')
return flask_app
```

然后 `likes.py` 里面就可以自己定义各种 url 了

```
from flask.blueprints import Blueprint


likes = Blueprint('likes', __name__)


@likes.route('/<comic_id>', methods=['POST'])
def likes_comic_post(comic_id):
pass
```

这样访问路径就是 `/api/v0/likes`
loading
2015 年 5 月 27 日
我有好多个都还是单文件,没空重构,不停有新改进…这是有多懒!
loading
2015 年 5 月 27 日
@noli 希望更多的朋友能在问题解决后讲一下,方便后人。
赞!
wodesuck
2015 年 5 月 27 日
如果不是很大的应用可以参考这篇,blueprint稍显太重量了
http://flask.pocoo.org/docs/0.10/patterns/packages/
把app写在app.py里,views里面import app,然后app.py的最后import一下views。
shajiquan
2015 年 5 月 28 日
用 tornado 啊……
wizardforcel
2016 年 2 月 22 日
装饰器是返回函数的函数,外层函数的参数就是装饰器的参数,内层函数的参数是被壮士的函数。

app.route(pattern)(handler)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/194181

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX