最近学 python ,在用 flask 写 blog ,发现了很多纠结的问题
比如如标题一样, db.session.commit() 这类的数据处理的代码,是放在 model 里面写一个方法然后在视图调用还是直接写在 view 里面?
题外话。。。 flask-bootstrap 这种插件比直接用 bootstrap 写一个 base 方便多少,感觉划算不来啊
1
davidx 2016-04-10 22:20:08 +08:00 1
db.session.commit()应该放在 view 里, 这不属于 model 的操作
|
2
neoblackcap 2016-04-11 00:07:50 +08:00 2
db.session.commit()应该放在 model 层,这不属于 model 的操作,但这属于业务逻辑,是 model 层,不是 model
view 对应的是 MVC 中的 C ,应该只做 M 的匹配(路由)。 你定义的 model 跟 MVC 里面的 M 没有关系, M 是指 model 层,一个抽象的概念,那是业务逻辑处理的地方,当然你可以将所有业务逻辑放在你的各种 Schema 类里面(此处用 Schema 替代 Model 来指代用户定义的表结构类)。但你这样做又会严重违反了 SQLAlchemy 的设计方向,毕竟 SQLAlchemy 是 Data Mapper ,因此它本身就是为了将业务逻辑,跟 Schema 分离而设计成这样的,你不见你都是在用 db.session 正在做增删改查吗? 因此我建议你多写个 service 类,所有业务逻辑放里面,数据库操作放里面(db.session.commit()也自然放里面),充当 MVC 中的 M |