浅谈flask和Django框架的区别

1. 介绍和下载安装

相同:

(1)flask和Django都是python的web框架,用于快速开发动态网站
(2)安装时都需要考虑和python版本兼容问题
(3)安装命令相同,如在命令行执行如下代码(都可以在python3.7版本中兼容):
        flask安装:pip install falsk==1.1.18
        Django安装:pip install django==2.2.1

不同:

Flask:

(1)Flask是一个轻量级的微框架,适合中小型项目,如毕设、实体店管理系统
(2) 核心已经实现(路由),其他技术需要下载第三方模块来补充或者开发者自己开发,锻炼python基础能力

Django:

(1)Django是一个“大而全”的重量级框架,适合大中型项目的快速开发
(2)Django是所有web框架中封装最完善,功能自定义最完整的,好多功能Django都已经开发完成,如:admin后台管理、数据库ORM、模板系统

2. 新建项目

不同(在沙箱环境中讨论):

Flask:

(1)创建项目时,不需要在命令行执行命令,直接在pycharm下新建。
(2)完全由自己建立模块,加以联系
(3)如果想要在命令行运行项目,需要借助第三方模块flask-script
(4)如果想要在命令行生成表格(数据库),需要借助三方模块flask-migrate

在命令行操作数据库的命令:

python main.py db init    # 初始化,创建生成迁移文件的目录(只需要创建一次)
python main.py db migrate   # 生成迁移文件,将模型类中修改过的内容生成到迁移文件中
python main.py db upgrade   # 将迁移文件中的内容同步到数据库
Django:

(1)激活沙箱环境,在命令行执行命令创建项目:django-admin startproject 项目名称
注意:命令行所在的文件位置。
(2) 新建项目后直接创建了项目结构,在命令行执行运行命令python manage.py runserver。Django直接可以在命令行运行项目,不用借助三方模块。

项目文件.png

项目包文件.png

(3)需要在命令行执行命令 python manage.py startapp app01,单独创建app
(4)Django项目封装了数据库orm,可以直接在命令行创建、更新数据库。

在命令行操作数据库的命令:

python manage.py check      # 检查模型类是否有书写问题
python manage.py makemigrations      # 生成迁移文件
python manage.py migrate      # 同步数据库

3. 结构

Flask以基于蓝图结构框架的OA项目为例

相同:

都需要有视图模块、路由模块、数据库模块、配置模块、静态文件和前端网页等

不同:

Flask:
flask项目结构.png

final_lt_03 项目外壳

main.py 项目的控制文件
lt.sqlite 数据库
config.py 项目的配置文件
oasystem 项目主目录

__init__.py 包文件
static 静态文件目录
templates 页面文件目录
user user目录

__init__.py 包文件
models.py 数据库文件
views.py 视图文件

Django:

Django项目结构.png

dj01 项目外壳

dj01 项目主目录
static 静态文件目录
templates 页面文件目录
db.sqlite3 数据库
manage.py 项目的控制文件

__init__.py 包文件
settings.py 项目配置文件
urls.py 路由文件
views.py 视图文件
wsgi.py 项目发布文件

4. 语法

(1)命令行:
Flask:
Flask需要安装flask-script模块才能在命令行执行
Django:
Django自带命令行模块,直接执行命令启动项目
python manage.py runserver
(2)视图:
Django框架的视图函数必须接受请求,并且返回的内容一定是一个 response对象,不可以直接返回字符串。
(3)路由:
1)Django在路由文件中定义了视图的路由,代替了[email protected](“/index/”)
Flask:


flask视图函数.png

Django:


Django视图函数.png
  1. 路由传递参数

Flask:
Flask通过在路由上定义参数同时声明变量的形式传递参数,规定< > 匹配部分作为参数传给同名的视图函数,如:
@app.route(“/index/”)
def index(name):
return name

Django:
django的路由可以通过正则进行参数传递,将正则匹配到的内容传 递给视图函数


路由正则传参.png

(4)静态文件和页面文件:
Flask直接新建静态文件和页面文件目录
Django除了需要新建目录外,要在settings配置文件中加载

templates:


templates配置.png

static:


static配置.png

(5)文件数据渲染:

1){{}}变量

Django模板系统调用带参数的方法不能用

2){% %}标签

Django的{% forloop%}标签可以实现嵌套循环

参数 描述
parentloop 用于嵌套循环,里面存放的是父循环的loop参数
Counter0 从0开始计数
Counter 从1开始计数
Revcounter 倒数,到1截至
Revcounter0 倒数,到0截至
First 是否第一个被循环
Last 是否最后一个被循环

Django中有{% ifequal %}标签但flask没有,{% ifequal %}标签判断两个值是否相等,作用相当于”==”

3){{ | }}过滤器

Django和flask过滤器类似

(6)继承和加载

继承(extends)和加载(include)Flask和Django相同,对比学习

你可能感兴趣的:(浅谈flask和Django框架的区别)