Django Tornado区别

Django

Django请求流程

      1.用户通过浏览器发送请求

      2.请求到达request中间件,中间件对request请求做预处理或者直接返回response

      3.若未返回response,会到达urlconf路由,找到对应视图函数

      4.视图函数做相应预处理或直接返回response

      5.View中的方法可以选择性的通过Models访问底层的数据

      6.取到相应数据后回到django模板系统,templates通过filter或tags把数据渲染到模板上

      7.返回response到浏览器展示给客户

      上述流程中最主要的几个部分分别是:Middleware(中间件,包括request, view, exception, response),URLConf(url映射关系),Template(模板系统


注重高效开发

全自动化的管理后台(只需要使用起ORM,做简单的定义,就能自动生成数据库结构,全功能的管理后台)

session功能

django的优点在于 大和全 ,orm,template,view 都自带了。需要的功能也可以去找第三方的app。  缺点嘛也就是自身的一些缺点,template不怎么好用,数据库用nosql不方便等。

Tornado

注重性能优越,速度快

解决高并发

异步非阻塞

websockets 长连接

内嵌了HTTP服务器

单线程的异步网络程序,默认启动时根据CPU数量运行多个实例;利用CPU多核的优势。

tornado的模板感觉更简单点。而且请求处理是基于回调的非阻塞调用,这样能提高并发量。 模板和数据库部分有很多第三方的模块可供选择,这样不利于封装为一个功能模块。缺点倒也不至于,因为本来就打算成为一个轻量级的框架吧

1.要性能, Tornado 首选;要开发速度,Django 和 Flask 都行,区别是 Flask 把许多功能交给第三方库去完成了,因此 Flask 更为灵活。

2.Tornado实现了异步机制,Django没有。

3.Django适合初学者或者小团队,Tornado适合高度定制。



Django是基于python的web框架,直接使用了WSGI,

用于创建模型的对象关系映射(orm), URL 设计,正则匹配网址,

缓存系统,与memcached或其它的缓存系统联用,更出色的表现,更快的加载速度。

架构设计:django是一个基于MVC构造的框架,即模型model,视图view和控制器controller。

django 里更关注的是模型model、模板template和视图views,称为 MTV模式。

模型model:数据存储层。处理与数据相关的事物。

视图views:表现层。定义一些方法,处理业务逻辑,如何在前端页面进行数据显示。

模板template:业务逻辑层。模型与模板的桥梁。

高内聚,低耦合

    高内聚:一个模块内部一个功能

    低耦合:每个模块各司其职,尽量零关联。

如果是正式启动的新项目,建议用 django 1.11

django-admin startproject test1

python manage.py startapp booktest

python manage.py makemigrations

python manage.py migrate

1.1.3.6测试数据操作  python manage.py shell

python manage.py runserver ip:port

python manage.py createsuperuser,按提示输入用户名、邮箱、密码

Orm的理解:

ORM是“对象-关系-映射”的简称,

1.根据对象的类型生成表结构

2.将对象、列表的操作,转换为sql语句

3.将sql查询到的结果转换为对象、列表

在站点的 __init__.py 文件中添加

import pymysql

pymysql.install_as_MySQLdb()

4.属性命名限制

a)不能是python的保留关键字

b)由于django的查询方式,不允许使用连续的下划线

关系的类型包括:

1.ForeignKey:一对多,将字段定义在多的端中

2.ManyToManyField:多对多,将字段定义在两端中

3.OneToOneField:一对一,将字段定义在任意一端中

用一访问多:对象.模型类小写_set

    bookinfo.heroinfo_set

用一访问一:对象.模型类小写

    heroinfo.bookinfo

访问id:对象.属性_id

    heroinfo.book_id

1.2.4模型查询 :

    a)查询集

    b)字段查询:比较运算符,F对象,Q对象

8.查询集的缓存

    构成了两个查询集,无法重用缓存

    两次循环使用同一个查询集,第二次使用缓存中的数据

自链接

class AreaInfo(models.Model):

    atitle = models.CharField(max_length=20)

    aParent = models.ForeignKey('self', null=True, blank=True)

上级对象:area.aParent

下级对象:area.areainfo_set.all()

你可能感兴趣的:(Django Tornado区别)