出于对 Python 的热爱,想把用 laravel 建的站用 flask 来一遍。突然发现 flask 灵活的我掌控不了方向盘了。虚心、小心吐槽:
laravel 有专门的 routes,一目了然的进行权限控制;flask 该如何分离(把她从装饰器中抽出来,不然几十条主路由加上 GET/POST 会头疼)、组织路由?权限控制中,有否判断用户登录后,就直接用 User 类来操作模板的相关内容的,而不是 session 中的 user_id (目前正在学某课堂的 flask )。
laravel 的 model 和 controller 分离的很干净,各司其职;感觉 flask 的 MC 放在一起了,如何组织 models 和 controller 如何让他们各司其职呢?
flask 的蓝图的分割思路不错,个人感觉 flask 是从模块在分割程序,而 laravel 是从 MVC 的功能在分割程序,各有千秋。有没有好的蓝图思路?
非常喜欢 flask 的 migrate 插入方式,比 laravel 用的简单,不知道 flask 有没有 db:seed 这种假数据来玩玩?
flask 的错误需要自己写字典来判断,laravel 有专门的错误提醒判断,flask 表单的错误提醒有啥好的包用吗?
学 flask 让我更加理清了程序在干什么,如潜水;学 Laravel 让我知道在操作什么,如游泳。
本人业余爱好编程,干着跟编程不着边的工作,laravel 和 flask,php 和 Python 都是看文档才会写的半瓢水,请大神轻喷,虚心求教。
下面是我用 laravel 做的一个站,练手的,没人看,准备下个月停掉,四字母 com 域名,有兴趣的可以看看: ZHV6ay5jb20=
1
Vogan 2018-06-05 17:16:37 +08:00
Flask 和 Laravel 是两个量级的产品。
比较也应该用 Django 和 Laravel 比。 Flask 的就在于轻,长时间积累趁手的库开发舒服。 Laravel 在于丰富,想要什么手边的虽然可能不是最好的,但都能拿过来直接用。 |
3
Kilerd 2018-06-05 17:56:32 +08:00 2
严格来说 Laravel 对标的是 Django。不过既然你发问了,就回答一下吧
1 路由问题 Flask 中通常使用装饰器来做权限管理 ```python @route('/admin') @role(Role.Admin) def admin_panel(): pass ``` 这就需要自己实现 role 这个方法,当然了已经有不少 Extension 做这方面的工作了。 而且你也可以用 Signal 来做这件事情 2 MVC 关于这点,看得出你对后端的架构层次不是很熟练,我通常是这样分层的。 Model 层,用 ORM 定义数据库模型。 Service 层,调用 Model 完成业务基本逻辑 Controller 层,在 Flask 里面就是每一个 route, 调用 Service 层,不会直接调用 Model 层。 当然啦,当架构再大点的时候,Model 和 Service 层中间可以加入一个 Cache 层。 Model 层之前还可以加一个数据驱动层做接口统一,因为你的数据可能不只是来源于一个数据库 ( PG,REDIS etc ) 所以,复杂之后就是这样了 Driver -> Model -> Cache -> Service -> Controller 基本上很多 Flask 的教程都会教你如何在用 ORM 定义 Model 的时候直接在 Model class 里面定义业务逻辑,比如 User Model 里面定义 login register 逻辑。 这样的做法实际上是整合了 Service 层进 Model 层。 这样的处理手法不是说不行,而是项目复杂之后,逻辑不够清晰,同时 Model 复杂之后,会出现循环引用的问题。 3 BluePrint 是的,蓝图的意图就是在于把一个项目分成不同的模块,在解藕之后,可以大幅度的提升 BluePrint 的重用性。 比如一个第三方登录的模块就可以在多个项目中直接使用(这也可以抽象成一个 Extension )。 怎么分割 BluePrint 比较常用的依据就是 「根据 url prefix 来区分」 4 数据库 flask 的 migration 说实话并不好用,个人比较习惯用 alembic。fake data 这个没有了解,都是在写单元测试的时候根据业务自己想的 5 errors 这点不清楚你在描述哪方面的东西。flask-wtf 在表单上面的处理已经很棒了。 |
5
iyaozhen 2018-06-05 18:12:08 +08:00 via Android
这就是企业级框架和轻量框架的区别。
企业级框架的核心就是制约 |