Flask Tornado Django 对比

2019-03-20  本文已影响0人  xxxQinli

安装

虚拟环境

pip3批量安装

Django

Flask

Tornado


启动

Django

Flask

app.run()函数的参数

Manager管理启动命令

Tornado

def make_app():
   return tornado.web.Application(handlers=[
            (r'/路由地址', 对应方法),
        ], template_path=模版地址, static_path=静态文件地址)

自定义参数


路由定义

Djando

路由URL规则

path

re_path

拆分urls.py文件

Flask

@app.route('/路由地址/<类型:参数名>/')
    def 路由方法():
        ....

设置参数

使用蓝图

Tornado

设置参数

位置参数

关键字参数


路由视图

Djando

判断提交类型

获取返回的参数

接收get传递参数

接收post传递参数

Flask

判断提交类型

直接返回字符串

渲染HTML页面

跳转页面

跳转到路由地址

跳转到路由视图

生成响应对象

获取返回的参数

接收get传递参数

接收post传递参数

设置响应状态码

Tornado

判断提交类型

直接返回字符串

渲染HTML页面

跳转页面

切入点函数

获取返回的参数

接收get传递参数

获取请求URL中的参数

接收post传递参数

设置响应状态码


cookie参数

关于cookie

Django

Flask

设置cookie参数

res = make_response(render_template('index.html'))
# 给index.html添加cookie
# 设置set_cookie('token', )
res.set_cookie('token', '12345678', max_age=3000)
return res

获取cookie参数

删除cookie数据

Tornado

普通cookie

设置cookie参数

获取cookie参数

删除cookie数据

secure cookie


session参数

关于session

Django

Flask

第一种: session数据存储在客户端

第二种: session数据存储在服务器端

将session数据存储在数据库

读取session数据

删除session数据

Tornado


数据库模型

Django

导入

数据库简单配置与迁移

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dj',
        'USER': 'root',
        'PASSWORD': '7890267648',
        'HOST':'127.0.0.1',
        'PORT':3306
    }
}

模型定义

字段定义

约束定义

模型操作

查询所有
筛选
筛选不满足条件的
统计多少条数据
排序
获取对象
模糊查询
查询结果在某一范围
大于 gt,大于等于 gte,小于 lt,小于等于 lte
聚合
字段值大于另一个字段值
Q() & Q()且 ,Q() | Q() 或,~Q() 非

模型关联关系

一对一

class A():
    id = modules.IntegerFiled()

class B():
    aa = mldels.OneToOneField(A,, on_delete=models.CASCADE, null=True,related_name='cc')

一对多

class A():
    id

class B():
    aa = models.ForeignKey(A, on_delete=models.CASCADE, null=True,related_name='cc')

多对多

Flask

使用flask-sqlalchemy操作数据库

配置数据库连接信息

迁移模型

删除表

增删改查

# 新增学生数据
    stu = Student()
    stu.s_name = '小明'
    stu.age = 20
    # 准备向数据库flask9中的student表中插入数据
    db.session.add(stu)
    # 提交操作
    db.session.commit()
    return '创建数据成功'
stu_list = []
    for i in range(10):
        stu = Student()
        stu.s_name = '小明' + str(i)
        stu.age = i
        stu_list.append(stu)
    db.session.add_all(stu_list)
    db.session.commit()
    return '数据添加完成'

一对多关系

多对多关系

Tornado

安装SQLAlchemy

配置连接

建立模型

  # 要继承Base
class Student(Base):
    # 主键自增的int类型的id主键
    id = Column(Integer, primary_key=True, autoincrement=True)
    # 定义不能为空的唯一的姓名字段
    s_name = Column(String(10), unique=True, nullable=False)
    s_age = Column(Integer, default=18)

使用模型

创建单条数据

创建多条数据

删除数据

查询数据


模版

Django

标签: {% 标签 %}

变量: {{ 变量名 }}

过滤器

Flask

jinja2

<title>
    {% block title %}
    {% endblock %}
</title>
{% extends 'base.html' %}

{% block title %}
    学生列表页面
{% endblock %}

继承模版填充内容

{% block js %}
    {{ super() }}
    <script src="123.js"></script>
{% endblock %}

引用外部文件写法

{% block css %}
    <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css')}}">
{% endblock %

后端向前端传入变量

前端解析变量

过滤器

Tornado

上一篇 下一篇

猜你喜欢

热点阅读