Web应用程序的本质
- Web框架的作用
- Web应用程序 (World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档。
- web框架实现的业务
- WSGI服务器做的事情:
- 将客户端的请求将请求行,解析请求;
- 通过web应用框架的接口,将解析后的请求内容交给web应用框架进行处理;
- 接收到web应用框架处理的结果,构造响应报文对象,发送给客户端;
- web框架做的事情
- 定义路由,将收到的请求进行一定规则的路由分发,将给对应的视图函数进行处理
- 实现具体的业务,视图函数执行请求对应的业务代码,将处理结果返回给WSGi服务器
- 为什么使用web框架
- 服务器端涉及到的知识、内容,非常广泛。这对程序员的要求会越来越高。如果采用成熟,稳健的框架,那么一些基础的工作,比如,网络操作、数据库访问、会话管理等都可以让框架来处理,那么程序开发人员可以把精力放在具体的业务逻辑上面。使用Web框架开发Web应用程序可以降低开发难度,提高开发效率。
- 总结一句话:避免重复造轮子。
Flask框架的介绍
- Flask框架
- Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。比如可以用Flask-extension加入ORM、窗体验证工具,文件上传、身份验证等。Flask没有默认使用的数据库,你可以选择MySQL,也可以用NoSQL。其 WSGI 工具箱采用 Werkzeug(路由模块) ,模板引擎则使用 Jinja2,也是通过默认安装拓展的形式实现的 。
- 可以说Flask框架的核心就是Werkzeug路由模块和Jinja2模板引擎。
- Flask常用的扩展包
- Flask-SQLalchemy:操作数据库;
- Flask-migrate:管理迁移数据库;
- Flask-Mail:邮件;
- Flask-WTF:表单;
- Flask-script:插入脚本;
- Flask-Login:认证用户状态;
- Flask-RESTful:开发REST API的工具;
- Flask-Bootstrap:集成前端Twitter Bootstrap框架;
- Flask-Moment:本地化日期和时间;
- Flask与Django的对比
- 总体区别
- Django功能大而全,Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。 Flask只包含基本的配置
- Django有模板,表单,路由,认证,基本的数据库管理等等内建功能。 与之相反,Flask只是一个内核,默认依赖于两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以扩展的形式进行嵌入使用。
- Flask 比 Django 更灵活用Flask来构建应用之前,选择组件的时候会给开发者带来更多的灵活性;
- 项目区别
- Django项目和应用创建好了之后,只包含空的模型和模板文件; Flask创建项目之后,目录里面没有任何文件,需要我们手动创建,是没有像Django一样组件分离,而对于需要把组件分离开的项目,Flask有blueprints。例如,你可以这样构建你的应用,将与用户有关的功能放在user.py里,把与销售相关的功能放在ecommerce.py里。
- Django把一个项目分成各自独立的应用,而Flask认为一个项目应该是一个包含一些视图和模型的单个应用。当然我们也可以在Flask里复制出像Django那样的项目结构。
- 模板语言的对比
- Django的模板语言过滤器最多只能传递一个参数
- 在Flask扩展的Jinja的模板语言里,可以把任何数量的参数传给过滤器,因为Jinja像调用一个Python函数的方式来看待它,用圆括号来封装参数。
Flask环境的安装
- 虚拟环境的配置
- 虚拟环境的安装
- 虚拟环境安装在django项目中有,不再进行记录
- 创建虚拟环境
- mkvirtualenv Flask_py
- 安装Flask
- pip install flask==0.10.1
- 安装其他的相关拓展
- pip freeze >requirements.txt 将虚拟环境依赖包导入文件
- pip install -r requirements.txt 安装依赖包文件中的所有包
- requirements包
Flask文档