Flask 与 Django区别
2018-09-02 本文已影响0人
十二右
Django: 大而全,但是耦合性高。Auth,Permission,admin基本没用
开发快,符合MVC模式
Flask: 微框架,很小巧。需要哪些功能,自己装。需要熟悉MVC模式
1. Model
1.1. 模型中不定义数据库的表名:
在Django(后面用D表示)中默认为: '应用app名小写_模型名小写'
在Flask(后面用F表示)中默认为: '模型名小写'
1.2. 模型中ID字段:
D : 自动创建自增的主键id
F: 必须自己定义自增的主键id: id = db.Column(db.Integer, primary_key=True, autoincrement=True)
1.3. 查询所有数据的结果, all()方法:
D: QuerySet
F: List
1.4.查询满足条件的数据的结果, filter()方法, F还有filter_by()方法:
D: QuerySet
F: BaseQuery objects
1.5. get()方法
F: get(<id>) -->取不到返回空,有则返回对象
D: get(attr='xx')-->取不到或者取到多个数据,报错, 取到一个返回对象
1.6. 关联关系
Django:
一对多:
模型1: u 字段为 FOREIGN_KEY,关联到模型2
模型1.u = u对象
模型1.u_id = u对象.id
模型1查找模型2的数据
模型2对象=模型1对象.u
模型1对象=模型2对象.模型1_set.all()
一对一:
模型1查找模型2的数据
模型2对象=模型1对象.u
模型1对象=模型2对象.模型1.all()
Flask:
一对多:
模型1: u字段为FOREIGN KEY,关联到模型2
模型2: yy字段,定义relationship字段, backref=‘uu’
模型1查找模型2:
模型2对象 = 模型1对象.uu
模型1对象 = 模型2对象.yy
2. Template
2.1. jinja2和DjangoTemplates模板引擎相比,jinja2语法更简单
比如: loop.index 和 forloop.counter
loop.revindex 和 forloop.revcounter
jiaja2中没有ifequal