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

2015-05-27 17:38:47 +08:00
 noli
譬如说,不同的功能模块自己定义不一样的路径,不要都写在 app.py 里面。
10845 次点击
所在节点    Flask
9 条回复
zeayes
2015-05-27 17:40:31 +08:00
blueprint
sirgod
2015-05-27 17:41:37 +08:00
用blueprint吧
crazyxin1988
2015-05-27 17:47:49 +08:00
可以单独 views.py 放 route
如果再多 可以view包
或者 blueprint
noli
2015-05-27 18:26:36 +08:00
非常感谢以上回复。最后找到了 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-05-27 19:03:00 +08:00
我有好多个都还是单文件,没空重构,不停有新改进…这是有多懒!
loading
2015-05-27 19:03:59 +08:00
@noli 希望更多的朋友能在问题解决后讲一下,方便后人。
赞!
wodesuck
2015-05-27 22:29:02 +08:00
如果不是很大的应用可以参考这篇,blueprint稍显太重量了
http://flask.pocoo.org/docs/0.10/patterns/packages/
把app写在app.py里,views里面import app,然后app.py的最后import一下views。
shajiquan
2015-05-28 16:26:42 +08:00
用 tornado 啊……
wizardforcel
2016-02-22 12:46:56 +08:00
装饰器是返回函数的函数,外层函数的参数就是装饰器的参数,内层函数的参数是被壮士的函数。

app.route(pattern)(handler)

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

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

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

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

© 2021 V2EX