V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
noli
V2EX  ›  Flask

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

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

    app.route(pattern)(handler)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2855 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:34 · PVG 16:34 · LAX 00:34 · JFK 03:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.