前言
记得第一次出去面试的时候,我是比较紧张的,当时过去的时候面试的是Python工程师,我大概看了一下要求觉得自己能上,就去了。面试过程全程打脸,当时要求面试者掌握flask、Django、git、Linux、容器技术。这些我都有学过,但是学的是很浅的内容,现在回想起来我的胆子也是非常大的,懂得点儿皮毛就敢去面试,这个就是年少轻狂吗?我觉得不是,这就是无知。
经过那次的打脸之后,我也就慢慢静下心来,专注于技术的深度。
今天,我为了可以掌握好Python的web框架:flask,特地为我以后可以更好的复习,进而做了这份笔记!
安装
flask可以称作为一个微框架,flask非常小。flask框架小,但是并不意味着它的功能少。
唯一不足的就是其余的功能需要通过拓展来实现。
flask主要有三个依赖:路由、调试和web服务网关接口,web服务网关接口子系统由Werkzeug提供,模板系统由jinja2提供,命令行集成由Click提供。
原生flask不支持数据库访问、Web表单验证和用户身份验证等高级功能。这些绝大多数web应用需要的核心服务都以拓展的形式实现,然后再与核心包集成。
开发者可以自由挑选符合项目需求的拓展,甚至可以自行开发。
本次总结的笔记主要是基于Ubuntu18.04这个Linux操作系统,但是如果你选择的是windows操作系统,在操作过程中也没有太多的差异,如果有不同的地方我也会及时指出来。
1.1 创建应用目录
打开终端,输入如下命令即可创建目录
$ mkdir flasky
$ cd flasky
1.2 虚拟环境
创建好应用目录之后,接下来就是安装flask了,安装flask最好的方式就是创建虚拟环境。创建虚拟环境的目的是为了保持全局环境的干净,在虚拟环境中你可以安装你想要安装的源,也就是说你可以安装私有包,安装之后不会影响Python的全局解释器。
1.3 在Python3中创建虚拟环境
值得高兴的是,在该版本的Ubuntu中预装的Python版本是3.8的,如果你不需要更换版本的话,可以使用默认的版本。
在标准库中没有venv这个包,需要执行以下命令安装python3-venv
$ sudo apt-get install python3-venv
创建虚拟环境的命令模式如下:
$ python3 -m venv virtual-environment-name
-m venv 选项的作用是以独立的脚本运行标准库中的venv包,后面的参数是虚拟环境的名称。
确保当前目录是在flasky
$ python3 -m venv venv
执行上面的命令之后,会出现一个名为venv的子目录,这里就是全新的虚拟环境,包含这个项目专用的Python解释器。
1.4使用虚拟环境
如果要想使用虚拟环境,首先要先激活虚拟环境,可以使用下面的命令激活虚拟环境
$ source venv/bin/activate
如果使用的是为微软windows系统,激活命令是:
$ venv\Scripts\activate
1.5 使用pip安装Python包
Python通过包管理器pip安装,所有的虚拟环境都是使用这个工具。
若想要在虚拟环境中安装flask,要确保venv虚拟环境已经激活,然后执行下面命令
(venv) $ pip install flask
一般来说,国内的源速度肯定是比国外的要快很多的,不会出现几kb这种折磨人的速度。
我这边以修改阿里云的源为例子,我觉得阿里云的速度就很不错了。
在Linux系统中,修改命令如下:
$ cd ~
$ ls -a
$ mkdir .pip
$ cd ./pip
$ vim pip.conf
进入编辑器之后赋值下面内容即可
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
ls -a命令的目的主要是查看在该目录下是否有创建.pip这个目录
执行上面的安装命令之后,可以查看,在虚拟环境中安装了哪些包
任何时候,使用pip freeze 命令查看虚拟环境中安装了哪些包
(venv) $ pip freeze
click==7.1.2
Flask==1.1.2
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
Werkzeug==1.0.1
可以启动Python解释器,尝试导入flask
(venv) $ python
>>> import flask
>>>
最后
本次的笔记分享就先到这里了,这些都是基础的知识。回顾起来我已经忘了大半,很庆幸现在学校的课不多,我可以通过课余时间将这些内容拾起来。
我是啃书君,一个专注于学习的人,你懂的越多,你不懂的越多,更多精彩内容我们下再见!