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在路由文件中定义了视图的路由,代替了flask@app.route(“/index/”)
Flask:
flask视图函数.png
Django:
Django视图函数.png
- 路由传递参数
Flask:
Flask通过在路由上定义参数同时声明变量的形式传递参数,规定< > 匹配部分作为参数传给同名的视图函数,如:
@app.route(“/index/<name>”)
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相同,对比学习










网友评论