Flask从零到一 1 | 虚拟环境和第一个flask程序

大约还有二十天假期时间,这二十天我准备跟进一个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的下载安装教程可以参考这篇博客:Windows系统安装教程

下载安装完成之后,在搜索栏找到Git Bash,运行时候输入git --version,如果出现对应的版本信息则代表安装成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eB4ZZ2KW-1596681381999)(https://imgkr.cn-bj.ufileos.com/84880944-b8bc-4083-a7e3-a68fa8f6c64d.png)]

配置虚拟环境

虚拟环境是一种独立于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()

运行上面这段程序会给出下面的结果,我们先关注红字部分的网址,会发现这是我们本地主机的IP地址,在运行一个flask程序后,他会默认监听主机的5000端口。

在这里插入图片描述
Copy一下网址利用浏览器打开就会出现我们视图函数中返回的信息:

在这里插入图片描述

这个flask程序处理过程如下:

  • 1、首先用户启动程序,并访问对应的网址。
  • 2、服务器解析请求,识别装饰器中绑定的URL。
  • 3、匹配URL并调用对应的视图函数。
  • 4、获取视图函数的返回值,返回至客户端。

对于上面这几行代码需要掌握几个知识点,首先你应该明确app为Flask类实例化后创建的一个应用对象,但里面的__name__有什么作用呢?

__name__为当前模块名,因为flask程序在运行的时候需要静态文件和模板文件辅助,在你设置__name__之后,flask就会以当前模块(文件)所在目录为根目录,默认这个目录中的static为静态目录,templates为模板目录,因为是默认存在的,所以在根目录中并不会体现出来。不理解不要紧,后面还会涉及这两方面知识。

视图函数暂时不需要过多介绍,需要注意的是视图上面的装饰器app.route(),这个装饰器可以为视图函数绑定一个URL,当用户访问这个URL时会触发对应的视图函数,其中'/'代表根地址,我们还可以在根地址后设置额外路径,比如app.route('/hello')。

这时如果我们在访问原来那个网址就会出现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]. https://www.bilibili.com/vide...
[3].Flask中英文档

如果你对这个系列感兴趣,欢迎关注公众号【奶糖猫】第一时间跟进后续更新~

你可能感兴趣的:(flask)