Flask
- Flask 本身只有一个内核,几乎所有的功能都需要用第三方的扩展来实现。
- Flask 没有默认使用的数据库,默认依赖两个外部库:Jinja2 模板引擎和 WSGI 工具箱(采用的时 Werkzeug 路由模块)
- Flask 自由、灵活,可扩展性强,第三方库的选择面广,开发者可以根据需求结合自己顺手的轮子
- Flask 非常适用于小型网站,开发web服务的API,各方面性能均等于或优于Django
Flask常用扩展包:
- Flask-SQLalchemy:操作数据库;
- Flask-script:插入脚本;
- Flask-migrate:管理迁移数据库;
- Flask-Session:Session存储方式指定;
- Flask-WTF:表单;
- Flask-Mail:邮件;
- Flask-Bable:提供国际化和本地化支持,翻译;
- Flask-Login:认证用户状态;
- Flask-OpenID:认证;
- Flask-RESTful:开发REST API的工具;
- Flask-Bootstrap:集成前端Twitter Bootstrap框架;
- Flask-Moment:本地化日期和时间;
- Flask-Admin:简单而可扩展的管理接口的框架
Django
- Django采用MVT设计模式
- 重量级web框架,功能齐全,除了web框架,自带ORM和模板引擎,提供一站式解决的思路,能让开发者不用在选择应用上花费大量时间
- 自带ORM使Django和关系型数据库耦合度过高,如果要使用非关系型数据库,需要使用第三方库
- 成熟、稳定、开发效率高、相对于Flask,Django的整体封闭性比较好,适合做企业级网站的开发
- 开发文档详细、完善、资料丰富, python web框架的先驱,第三方库丰富
Django原生提供众多功能组件 :
- 提供项目工程管理的自动化脚本工具
- 数据库ORM支持(对象关系映射,英语:Object Relational Mapping)
- 模板
- 表单
- Admin管理站点
- 文件管理
- 认证权限
- session机制
- 缓存
两者区别
1. 路由映射 : Django通过父类 View 中的 dispath 方法来进行判断本次请求方式具体是 GET 还是 POST 等; 浏览器请求服务器:
Flask中,路由是通过装饰器给每个视图函数提供的, 而且一个视图函数可以接收多种请求方式,在函数内部可以通过 request.method 得到当前请求方式,进行不同的逻辑处理
2. Django 使用终端命令创建项目和创建应用,创建应用后自动携带一系列文件(admin & models & tests & views & migrations目录)
3. 模板对比 : Flask可以将任意数量的参数传递给过滤器,Django使用冒号来分隔过滤器和参数,因此Django模板语言的过滤器只能传递一个参数
4. Flask 提供多种上下文变量 : 应用上下文(current_app[存储应用程序中的变量],g[临时变量,充当者中间媒介的作用,可利用它传递一些数据])
请求上下文(request[http请求的内容],session[会话中的用户信息])
-
- 请求上下文:保存了客户端和服务器交互的数据
- 应用上下文:flask 应用程序运行过程中,保存的一些配置信息,比如程序名、数据库连接、应用信息等
- 上下文中的对象只能在指定上下文中使用,超出范围不能使用
5. Flask 使用蓝图使模块结构化,Django 使用子应用的形式进行拆分
原文地址:https://www.cnblogs.com/hsmwlyl/p/10574176.html
时间: 2024-10-25 16:53:43