01-01 初识Flask
1 什么是flask?
Flask 本是作者 Armin Ronacher在2010年4月1日的一个愚人节玩笑 ,不过后来大受欢迎,进而成为一个正式的python编写的web框架
Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务,在介绍Flask之前首先来聊下它和Django的联系以及区别,django个大而全的web框架,它内置许多模块,flask是一个小而精的轻量级框架,Django功能大而全,Flask只包含基本的配置, Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。Django有模板,表单,路由,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于2个外部库: Jinja2 模板引擎和 WSGI工具集–Werkzeug , flask的使用特点是基本所有的工具使用都依赖于导入的形式去扩展,flask只保留了web开发的核心功能。
WSGI(web服务器网关接口)是python中用来规定web服务器如何与python Web服务器如何与Python Web程序进行沟通的标准,本质上就是一个socket服务端。而 Werkzeug模块 就是WSGI一个具体的实现
关键词:一个Python编写微web框架 一个核心两个库( Jinja2 模板引擎 和 WSGI工具集)
2 为什么要有flask?
flask性能上基本满足一般web开发的需求, 并且灵活性以及可扩展性上要优于其他web框架, 对各种数据库的契合度都非常高
关键词:1. 性能基本满足需求 2 .灵活性可拓展性强 3. 对各种数据库的契合度都比较高。
4.在真实的生产环境下,小项目开发快,大项目设计灵活
3 学前准备:虚拟环境
3.1 虚拟环境是什么?
虚拟环境是隔离的Python解释器环境。通过创建虚拟环境,你可以拥有一个独立的Python解释器环境,相当于对全局的python解释器环境拷贝一份私有的副本, 这样做的好处是可以为每一个项目创建独立的Python解释器环境,因为不同的项目常常会依赖不同版本的库或Python版本。使用虚拟环境可以保持全局Python解释器环境的干净,避免包和版本的混乱,并且可以方便地区分和记录每个项目的依赖,所谓环境追根溯源也是文件,既然是文件就支持拷贝到各个平台上,所以同时提高了可移植性,以便在新环境下复现依赖环境。
举例说明:
例1:如果你同时有很多个项目,有一个爬虫项目,有一个Flask项目,有一个Django项目放在一个环境下,那么管理相关的第三方库难免混乱。
例2:如果你有两个Flask项目,但是两个项目flask版本不一致,会出现版本冲突问题
关键词:1、Python解释器的一个私有副本 2、解决了包管理混乱、版本冲突、提高了移植性
3.2 如何使用虚拟环境?
3.2.1 搭建虚拟环境
windows的开发环境的安装过程,我们使用的是virtualenv虚拟开发环境,首先安装相关包的依赖
pip install virtualenvwrapper-win
利用安装好的模块我们创建一个虚拟环境
##注意:这个‘’first_01_env‘’ 是我们自己给虚拟环境取的名字,并且要记录一下图(1)的安装路径,一会我们需要使用。
mkvirtualenv first_01_env
虚拟环境其他相关命令:
01、切换到指定的虚拟环境:注意我们进入虚拟环境是需要用workon命令,但是首次安装成功会自动进入虚拟环境。
workon first_01_env
02、退出虚拟环境
deactivate
03、删除指定的虚拟环境
rmvirtaulenv first_01_env
04、列出所有虚拟环境:
lsvirtualenv
05、进入到虚拟环境所在的目录:
cdvirtualenv
3.2.1 在虚拟环境中安装我们的Flask模块
pip install flask
Collecting flask
...
Successfully installed Jinja2-2.10 MarkupSafe-1.1.0 Werkzeug-0.14.1 click-7.0 flask-1.0.2 itsdangerous-1.1.0
从上面成功安装的输出内容可以看出,除了Flask包外,同时被安装的还有5个依赖包,它们的主要介绍如表(1-1)所示。
包名及版本 | 功能 |
---|---|
Jinja2-2.10 | 渲染模板引擎工具集 |
MarkupSafe-1.1.0 | 可以识别HTML转义规则。HTML字符转义工具集 |
Werkzeug-0.14.1 | Web 框架的底层库,提供了请求及响应以及开发服务器的功能,简称WSGI工具集 |
click-7.0 | 命令行工具集 |
itsdangerous-1.1.0 | 加密工具集 |
表(1-1)
首先对这5个库先有一个印象,接下来会在具体的实际应用中应用这些库。
✔提示:这些库均由Flask团队开发
4 开始我们的第一个Flask程序
这里我们使用***pycharm*编辑器来学习*Flask***,pycharm的安装我们就不重复了。
4.1 创建一个Flask程序
具体操作如图(a)–图(d)
第一步
图(a)
第二步
图(b)
第三步
!注意 如果找不到虚拟环境路径可以参考虚拟环境其他命令
lsvirtualenv # 列出所有的虚拟环境
workon first_01_env # 切换到指定的虚拟环境
cdvirtualenv # 切换到指定的虚拟环境路径 该目录就是我们所要的路径
图(c)
第四步
4.2 解读Flask程序
4.2.1 项目目录详解:
“static文件夹”用于存放各种静态文件 css、js、图片等等
“templates文件夹”用于存放html模板文件
“app.py”为我们的主文件 ,启动项目需要启动该文件
注意 app.py 文件的名字我们可以自由命名,但是除了flask.py 这种和Flask库相冲突的名字
主文件app.py文件代码
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
4.2.2 代码拆分为三部分 :
第一部分
from flask import Flask
app = Flask(__name__)
导入我们安装好的flask包,通过flask包导入Flask类,Flask类即为Flask的核心,实例化这个Flask类的到一个实例化对象app。
__name__
这个特殊的参数:Python会根据所处的模块来赋予__name__
变量相应的值,对于我们的程序来说(app.py),这个值为app。
@app.route(