Flask从零到一 1 | 虚拟环境和第一个flask程序
本文约2500字,阅读大概需要7分钟
大约还有二十天假期时间,这二十天我准备跟进一个Flask入门系列,大致会分为10-12篇文章。虽然我以后不想做开发,但是Web开发热度还是挺高的,所以就用了一段时间学习了一下,下学期也会有与Web有关的课程,如果对Flask感兴趣的话,可以持续跟进,希望这个系列可以帮到伙伴们。
第一篇主要包括两个方面,一方面是学习Flask之前的准备工作,比如配置相应的环境以及下载一些工具;另一方面就是编写第一个Flask简易程序。
Flask是支持Python2 和 Python3两个版本的,但是在我接触Python的时候已经更新到3.6了,所以我也没有关注Python2。我相信伙伴们应该也大多都在用Python3,所以这个系列会以Python3为基础,Flask的版本使用最新的即可。
这里只对Flask做一个简要的介绍,Flask是一个微框架,本身相当于一个内核,只保留了核心功能:请求响应处理和模板渲染。这两个功能分别有Werkzeug和Jinja实现,Flask本身也包装了这两个依赖,但Flask还拥有很多扩展包,用户可以根据自己的需求导入扩展包实现相应的功能,这也是Flask框架灵活的原因。
Git下载
首先对于Windows用户,推荐下载Git这个工具,虽然很多功能我们在终端也可以实现,但在某些方面上讲使用Git的命令会更加方便,而且它也可以用来记录编写程序的源码和文件的变动情况,Git的下载安装教程可以自己查找,或者参考阅读原文中的博客,过程不是很难。
下载安装完成之后,在搜索栏找到Git Bash,运行时候输入git --version,如果出现对应的版本信息则代表安装成功。
配置虚拟环境
虚拟环境是一种独立于Python全局环境的Python解释器环境,比如一个虚拟环境中的解释器版本可以为Python2,另一个的解释器版本可以为Python3,它们之间是不会相互干扰的,而且也不会受你电脑中Python环境的影响。
配置虚拟环境是很必要的操作,因为不同的程序依赖语言的版本可能会不同,但如果在一台电脑中下载多个版本Python解释器,就会导致全局环境杂乱,虚拟环境很好的解决了这个问题,也便于管理我们的程序。
Python3中内置的venv模块可以创建虚拟环境,首先在系统自带的cmd中通过cd指令进入到指定的文件中,需要注意的是这个路径不能包含中文,然后使用下面指令创建一个虚拟环境。
python -m venv env
其中env为虚拟环境的名称,可以自己拟定。这时会在当前目录下生成一个包含了Python解释器的虚拟环境文件夹,然后在Scripts文件下有两个.bat文件,这两个文件就控制着激活虚拟环境和退出虚拟环境。
通过下面指令就可以激活虚拟环境和退出虚拟环境:
env\Scripts\activate#激活
env\Scripts\deactivate#退出
或者也可以直接进入Scripts目录下直接输入activate或者deactivae即可,当目录前出现下面这种小括号形式就代表激活虚拟环境成功。
(env)
然后就可以通过pip在虚拟环境中安装Flask,不用指定版本,默认安装最新版本。
pip install flask
第一个flask程序
编写一个flask程序是非常简单的,仅仅几行代码就可以实现,流程大致可以分为以下五步:
-
1、从flask包中导入Flask类 -
2、实例化Flask类,创建一个应用对象 -
3、定义视图函数 -
4、为视图函数添加装饰器(定义路由) -
5、启动flask程序
#从flask包中导入Flask类
from flask import Flask
#创建flask的应用对象
app = Flask(__name__)
@app.route('/')
def hello():
"""定义视图函数"""
return 'Hello NaiTangMao'
if __name__ == "__main__":
#启动flask程序
app.run()
Copy一下网址利用浏览器打开就会出现我们视图函数中返回的信息:
这个flask程序处理过程如下:
-
1、首先用户启动程序,并访问对应的网址。 -
2、服务器解析请求,识别装饰器中绑定的URL。 -
3、匹配URL并调用对应的视图函数。 -
4、获取视图函数的返回值,返回至客户端。
对于上面这几行代码需要掌握几个知识点,首先你应该明确app为Flask类实例化后创建的一个应用对象,但里面的__name__有什么作用呢?
__name__为当前模块名,因为flask程序在运行的时候需要静态文件和模板文件辅助,在你设置__name__之后,flask就会以当前模块(文件)所在目录为根目录,默认这个目录中的static为静态目录,templates为模板目录,因为是默认存在的,所以在根目录中并不会体现出来。不理解不要紧,后面还会涉及这两方面知识。
这时如果我们在访问原来那个网址就会出现Not Found的错误提示,此时必须要访问http://127.0.0.1:5000/hello才能触发视图函数。
一个视图函数也可以同时绑定多个URL,这通过为视图函数添加多个装饰器实现:
@app.route('/')
@app.route('/hello')
def hello():
"""定义视图函数"""
return 'Hello NaiTangMao'
也就是说现在不论我们访问http://127.0.0.1:5000/ 还是 http://127.0.0.1:5000/hello都可以触发这个视图函数。
综上为Flask入门系列的第一篇,主要介绍虚拟环境的配置以及简易flask程序构成部分的简要解析。
本文参考资料:
[1].《Flask入门教程》.李辉著
[2].Flask中文、英文文档
[3].https://www.bilibili.com/video/BV1yt4y1Q7k5?p=5
End
奶糖猫
优秀的人都在看