首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

关于 Flask 项目的代码文件组织

  •  
  •   Livid · 32 天前 via iPhone · 4953 次点击
    这是一个创建于 32 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是否有什么大型的基于 Flask 框架的开源项目,想学习一下他们是如何组织代码的。
    41 回复  |  直到 2019-11-14 11:00:17 +08:00
        1
    wph95   32 天前 via iPad
    Airflow 当初看过一些 感觉还可以
    // 要是问 Django 就好了 有好几个写的很优雅的大项目( sentry taigo)非常值得推荐
        2
    Livid   V2EX Moderator   32 天前
    @wph95 是啊。我就在想有没有类似 Sentry 这样规模的值得学习的项目。
        3
    Livid   V2EX Moderator   32 天前
    官方文档其实有提到一个 pattern:

    http://flask.palletsprojects.com/en/1.1.x/patterns/packages/
        4
    memorybox   32 天前   ♥ 3
    一个提供 restapi 的示例,组织很简洁,有参考价值:

    https://github.com/frol/flask-restplus-server-example
        5
    haoji   32 天前 via Android
    @wph95 别说一半不说了嘛,推荐一下?
        6
    phy25   32 天前 via Android
    @haoji #5 括号里的不是吗。
        8
    haoji   32 天前 via Android
    @phy25 😂我的错,刚睡醒眼睛没睁开。🤐
        9
    wmc   32 天前   ♥ 1
    想起之前实习的时候读到的一篇文章,用一个很 trick 的方法来解决循环引用…… 这个设计很巧,实际上把所有的模块都做成了 init_app

    https://lepture.com/en/2018/structure-of-a-flask-project
        10
    Latin   32 天前   ♥ 1
        11
    banxi1988   32 天前   ♥ 1
    嗯, 搭车问一下,现在用 FastAPI 的人多吗? 一个类似 Flask 的框架.
    但是比 Flask 更现代:
    1. Python 3.6+
    2. 完善的类型声明
    3. 异步 async await 支持
    4. 自带 Swagger (OpenApi)
        12
    Allianzcortex   32 天前   ♥ 2
    @wmc 提到的 @lepture 曾经写过一个论坛 june,对里面装饰器来控制权限的用法至今还印象深刻,当然毕竟他就是 pocoo 组(Flask 核心开发)里的一员

        13
    cz5424   32 天前 via iPhone   ♥ 1
        14
    Orenoid   32 天前   ♥ 1
    我是参照了这两个项目,可能都谈不上大型。
    狗书的 flasky,也就是 7 楼提的那个:
    https://github.com/miguelgrinberg/flasky/tree/60252375f8660d034680725db24301c594ce69e4
    flask 官方 repo 里的 tutorial:
    https://github.com/pallets/flask/tree/master/examples/tutorial
    两者用的都是类似的项目结构,flasky 把 turorial 里的一些单文件扩展成了包,但基本架构没太大差别。
        15
    Orenoid   32 天前
    @Orenoid #14 更正,flasky 跟 7 楼的不是同一个项目,只是同一个作者
        16
    ebingtel   32 天前
    怎么开心怎么来,都是微服务了……一个 web 项目也可以 install 其他的子项目作为集成
        17
    sujin190   32 天前
        18
    676529483   32 天前
    感觉 flask 一直都是关注度高,但开源的大型项目找不到,相反 django 就很多了。根据面试的情况归纳,基本小企业跟风用 flask 的多一些,做的也比较小型
        19
    cpj   32 天前
    老帖子里有提到过,并且我实践了 lepture 的那篇文章 ( https://lepture.com/en/2018/structure-of-a-flask-project ),感觉比较舒服
        20
    ClericPy   32 天前
    早年间用的 https://exploreflask.com/en/latest/organizing.html, 虽然也有中文版教程
    不过楼主这种站长经验丰富的应该不需要这个...

    用了两年 flask, 我就跳 asgi 了, starlette / fastapi 真香, falcon 也真快
        21
    est   32 天前   ♥ 5
    flask 有很多 anti-pattern。

    网上抄的装饰器一时爽,单元测试火葬场。
    全局 context 变量一时爽,堆栈弹错火葬场。
    flask API 输出一时爽,代码组织火葬场。
    简单功能一时爽,flask-* 插件火葬场
    flask-*插件一时爽,遇到 bug 兼容问题火葬场
        22
    Hopetree   32 天前
    把所有的 APP 都使用 init_app ()加载,我觉得这就是 flask 的组织架构了
        23
    lolizeppelin   32 天前
    想看大型的就不要把关注点放在 web 框架上...

    来来来 openstack 走起
        24
    GoLand   32 天前
    https://github.com/Robpol86/Flask-Large-Application-Example

    有个这个,很不错,一直在用。
        25
    gjquoiai   32 天前
        26
    XIVN1987   32 天前
    @est
    看来还是 django 靠谱啊,,
        27
    hmxxmh   32 天前
    @banxi1988 类型注解只能声明一些常用的数据类型吧,如果是 file 类型和 QuerySet 对象应该怎么声明
        28
    est   32 天前   ♥ 2
    @XIVN1987 烧火棍有烧火棍的用处,航母有航母的战斗力。要把烧火棍变成航母,得有规划和变通能力。要把航母当烧火棍使,得会法术和本事。
        29
    skenan   32 天前
    现在用 flask 一般是写 api 吧,比较喜欢这个 repo 里的组织方式: https://github.com/openspug/spug
        30
    Trim21   32 天前 via iPhone
    fastapi 真香
        31
    ampedee   32 天前 via Android
    @banxi1988 FastAPI 真香
        32
    Trim21   32 天前 via Android
    @hmxxmh 不完全是用的类型注解,还可以用函数参数默认值来声明。上传文件是通过参数默认值声明的。
        33
    anaf   32 天前
    cookiecutter-flask 一直以来用这个
        34
    Aether   32 天前
    @est 之前用过一段时间 flask,现在转到 Go 下面,最开始很痛苦,现在觉得没有环境问题啥的各种爽……
        35
    est   31 天前
    @Aether 环境问题是指 py 版本和依赖包么?那的确很蛋痛。

    不过 go 一般都配合 docker 运行了。反而也麻烦。
        37
    shisang   31 天前
        38
    kayseen   26 天前
    @wph95
    话说,你有哪些优秀的 django 项目啊,可以分享一下不?
    (相信大家都想学习下)
        39
    stdout   25 天前
    @banxi1988 试试 connexion 这个,应当完全满足你
        41
    matrix1010   25 天前 via Android
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2910 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 38ms · UTC 11:56 · PVG 19:56 · LAX 03:56 · JFK 06:56
    ♥ Do have faith in what you're doing.