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
上一篇下一篇

猜你喜欢

热点阅读