第一天你的第一个Flask-Web应用你好喵星在线

30次阅读

共计 6132 个字符,预计需要花费 16 分钟才能阅读完成。

原文:http:catonlinepy.tech/
声明:原创不易,未经许可,不得转载

1. 你将学会什么

通过学习第一天的内容,你将学会如何创建你的第一个 flask web 应用,并且在自己的电脑上运行它。这是第一天的学习内容,所有内容的代码都将托管在 github 上,猫姐强烈建议各位同学在学习本课内容时,先跟着教程自己尝试手敲代码,遇到问题后再去查看猫姐 github 上的代码,如果问题实在不知道如何解决,可以在日志下面留言具体说明情况。

2. 运行环境准备

在开始写代码前,我们需要准备好 flask web 应用的运行环境,因此我们需要做 3 件事:1. 安装 python;2. 安装虚拟开发环境;3. 安装 flask 框架。下面我们详细介绍一下这 3 个步骤的操作过程:

2.1 第一步:安装 python

首先是安装 Python 环境,下面提供了适用于不同操作系统的 python 安装包链接,大家根据自己的情况安装即可:

  1. python for windows
  2. python for Linux/Unix(一般已经安装了 python 解释器)
  3. python for Mac OS X

安装 python 的过程就不详细说明,相信大家都不会有什么问题,猫姐在这里强烈推荐各位同学使用 Linux 发行版进行学习,虽然开始时可能会遇到一些操作上的问题,但是在使用 Linux 发行版操作系统时,你会学到更多的其它软件开发的知识,毕竟 Linux 才是专門为软件开发人员准备的系统。
猫姐使用的操作系统是 ubuntu18.04,大家也可以使用 deepin 或 centos 等其它 Linux 发行版操作系统。查看 python 环境是否安装成功的命令如下(打开命令行 ctrl+alt+T, 输入 python):

$ python
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

如上我们会看到三个大于号(>>>),这表示我们已经进入 python 交互环境中。我们可以在 python 交互环境中输入各种 python 语句,进行 python 基础知识的学习。如果想要退出 python 交互环境,只需可以输入 exit() 即可;在 Linux 或 Mac OS X 操作系统中,通过 ctrl+ d 快捷键也可以退出 python 交互环境。

2.2 第二步:安装虚拟开发环境

对于不了解 python 的同学来说,可能不知道虚拟环境是什么东西,不用担心!如果你能坚持学习完成后面几天的内容,你将会对虚拟环境有更深入的理解。这里猫姐简单解释一下,虚拟开发环境的主要作用是为了将 web 开发项目所用的各种库与操作系统自带的 python 库隔离开来,这样做的好处是开发环境与系统环境隔离,环境之间不会相互影响,特别是对于多人协作的大型项目的开发,建立虚拟环境是非常有必要的。猫姐说了这么多“废话”,其实建立虚拟开发环境的过程很简单,主要完成下面几个步骤(猫姐强烈推荐同学们使用 python3 进行学习):

# 安装 python3 的虚拟环境包管理模块
$ sudo apt-get install python3-venv

# 使用下面命令,创建一个虚拟开发环境
$ python3 -m venv < 虚拟环境的名字 >

# 激活刚才建立的虚拟开发环境,(这里我们创建一个名为 miao_venv 的虚拟环境)$ python3 -m venv miao_venv
$ source maio_venv/bin/activate

2.3 第三步:安装 Flask web 框架

前面两步,我们已经安装了 python 开发环境、创建了虚拟开发环境,并激活了虚拟开发环境。大家需要记住,后面我们所有 python 包的安装都要在虚拟开发环境中进行。如下,当我们激活虚拟开发环境后,会看到命令行前面出现一个括号,括号中的内容为虚拟开发环境的名字:

$ python3 -m venv miao_venv
$ source miao_venv/bin/activate
(miao_venv) maojie:~/flask-course$   #注意这里括号中的内容,表示我们已经在 miao_venv 的虚拟开发环境中 

安装 python 包的方法非常简单,Flask 作为 python 的一个包,安装起来当然也是非常简单的,运行如下命令即可:

# 使用 pip install 安装 flask
(miao_venv) maojie:~/flask-course$ pip install flask

#想要退出虚拟开发环境,运行下面命令即可,注意观察输入命令后,命令行出现的变化
(miao_venv) maojie:~/flask-course$ deactivate 
 如果想验证 flask 是否安装成功,可以进入 python 解释器,用 import 导入,如果导入没有报错,则安装成功。
# 注意:一定要在虚拟环境中安装 flask, 然后运行 python 解释器
(miao_venv) maojie:~/flask-course$ python  
>>> import flask

3. 我们的第一个 Flask Web 程序

万事俱备,只欠东风。有了前面的准备工作,我们现在可以正式干活了。由于这个教程将会是一个十多天的系列教程,所以需要创建一个目录来管理以后每一天教程的代码,下面大家可以跟着猫姐一起完成项目目录的创建过程。我们首先创建一个名为 flask-plan 的目录,然后该目录下面创建 miao_venv 的虚拟环境,并将其激活,最后安装 flask 模块。

# 创建 flask-plan 目录
maojie@Thinkpad:~$ mkdir flask-plan

#进入 flask-plan 目录
maojie@Thinkpad:~$ cd flask-plan

#创建 maio_venv 目录
maojie@Thinkpad:~/flask-plan$ python3 -m venv miao_venv

#激活虚拟开发环境
maojie@Thinkpad:~/flask-plan$ source miao_venv/bin/activate
(miao_venv) maojie@Thinkpad:~/flask-plan$ 

#安装 flask 模块
(miao_venv) maojie@Thinkpad:~/flask-plan$ pip install flask

猫姐会将后面所有教程的代码放到 flask-course-primary 目录,因此下面首先创建 flask-course-primary 目录,然后在该目录下创建 day1 目录,用来存放这一篇教程的所有代码:

# 创建 flask-course-primary 目录
(miao_venv) maojie@Thinkpad:~/flask-plan$ mkdir flask-course-primary

#进入到 flask-course-primary
(miao_venv) maojie@Thinkpad:~/flask-plan$ cd flask-course-primary/

#创建第一天的课程目录
(miao_venv) maojie@Thinkpad:~/flask-plan/flask-course-primary$ mkdir day1

#进入到 day1 目录
(miao_venv) maojie@Thinkpad:~/flask-plan/flask-course-primary$ cd day1

下面是今天这篇教程的代码组织结构,在命令行下输入 tree 命令可以直接看到。这里,run.py 文件直接存放在 day1 目录下。猫姐创建了一个名为 hello 的 python 包(当目录下面存在__init__.py 文件时,我们称该目录为 python 的一个包)。此外,hello 目录下还有 routes.py,用来存放视图函数等代码。

(miao_venv) maojie@Thinkpad:~/flask-plan/flask-course-primary$ tree day1/
day1/
├── hello
│   ├── __init__.py
│   └── routes.py
└── run.py

我们通过下面的命令完成 hello 包的创建:

(miao_venv) maojie@Thinkpad:~/flask-plan/flask-course-primary/day1$ mkdir hello
(miao_venv) maojie@Thinkpad:~/flask-plan/flask-course-primary/day1$ cd hello/
(miao_venv) maojie@Thinkpad:~/flask-plan/flask-course-primary/day1/hello/$ touch __init__.py

下面猫姐对以上文件中的代码及用途逐个进行讲解,我们首先来看一下__init__.py 文件中的代码,猫姐这里使用的编辑器是 Pycharm,大家可以根据自己的喜好选择顺手的 ide 进行代码的编辑。

# 以下是__init__.py 文件中的代码,我们逐行进行解释
from flask import Flask    # 从 flask 包中导入 Flask 类
app = Flask(__name__)      # 通过 Flask 类创建一个 app 实例
from hello import routes   # 从 hello 包中导入 routes 文件里的所有代码 

routes.py 文件的创建也是非常简单的,如果不用在命令行中用 touch 命令新建文件的话,那么可以在 Pycharm 中,鼠标右击 hello-New-Python File,在弹框中输入 routes.py 即可。

hello/routes.py 文件中的代码如下图所示:

# 以下是 routes.py 文件中的代码,我们逐行进行解释
from hello import app         # 从 hello 包中导入 app 实例
@app.route("/")               # 使用装饰器对下面的视图函数 index 进行装饰
def index():
    return "你好,喵星在线!"     # 这里返回的内容,会直接送到浏览器中显示出来

# 解释:这里装饰器的实际作用就是将路由与视图函数绑定起来,当用户在浏览器中输入 / 路由请求时,就会对应的执行下面的 index 函数 

最后是 day1 目录下 run.py 文件中的代码:

from hello import app         # 从 hello 包中导入 app 实例

if __name__ == "__main__":    
    app.run()                 # app 实例调用自己的 run 函数 

现在,这样一个简单的 Flask Web 应用程序就完成了。如果要使用 flask run 命令,我们需要进入 run.py 所在目录。在运行之前,需要通过设置 FLASK__APP 环境变量来告诉 Flask,具体的 app 实例在哪一个 python 文件中。

# 设置 FLASK_APP 环境变量,运用 flask run 命令时可以找到 app 实例在 run.py 文件中
(miao_venv) maojie@Thinkpad:~/flask-plan/flask-course-primary/day1$ export FLASK_APP=run.py

# 使用 flask run 命令将程序运行起来 
(miao_venv) maojie@Thinkpad:~/flask-plan/flask-course-primary/day1$ flask run
 * Serving Flask app "run.py"
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)  # 如果看到这里正常显示,则 web 应用已经运行起来了 
(flask_venv) meyou@meyou-ThinkPad-W520:~/flask_learing/flask-tutorial-for-newbies/day1$ python run.py
 * Serving Flask app "hello" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) # 如果看到这里正常显示,则 web 应用已经运行起来了 

最后我们在地址栏中输入 http://127.0.0.1:5000/ 或是 http://localhost:5000/ 就可以看到下图所示的效果了。

这样,一个简单的 Flask Web 应用程序就完成了。最后还有一点值得提醒的是,在终端会话中设置的环境变量不会永久生效,所以每次在重新新开一个终端时,就需要重新导入 FLASK_APP 环境变量,这样非常麻烦。所以 Flask 从 1.0 版本起,就可以通过配置.flaskenv 文件直接导入 FLASK_APP 环境变量,省去每次重启系统后导入环境变量的麻烦。为了使用 dotenv 工具,我们需要安装 dotenv 包,直接使用下面的 pip 命令安装即可:

(miao_venv) maojie@Thinkpad:~/flask-plan/flask-course-primary/day1$ pip install python-dotenv

安装完成后,我们需要在 day1 目录下新建一个名为.flaskenv 的文件,里面写入如下内容:

FLASK_APP=run.py

通过此项设置,当我们运行 flask run 时,FLASK_APP 就会自动加载,而不需要手动导入环境变量。

4. 总结

学习完第一天的教程,我们掌握了如下技能:

  1. 如何创建虚拟开发环境
  2. 如何进入及退出虚开发拟环境
  3. 如何在虚拟开发环境中安装 python 包
  4. 如何组织并完成一个最简单的 Flask 应用
  5. 如何运行我们的 Flask web 应用程序

第二天的内容,我们将会带领大家一起了解什么是业务逻辑和响应逻辑的分离,为什么在 Flask 应用中需要使用模板(templates),第一天的内容就到这里,喜欢的同学们可以在下面点赞留言,或是访问我的博客地址:http://catonlinepy.tech/ 加入我们的 QQ 群进一步交流学习!

5. 代码的获取

大家可以到这个网址去获取今天教程中的所有代码:https://github.com/miaojie19/…

具体下载代码的命令如下:

# 使用 git 命令下载 flask-course-primary 仓库所有的代码
git clone https://github.com/miaojie19/flask-course-primary.git

# 下载完成后,进入 day1 目录下面,即可看到今天的代码
cd flask-course-primary
cd day1

正文完
 0