原文:http://www.catonlinepy.tech/
声明:原创不易,未经许可,不得转载
1. 你将学会什么
通过学习第一天的内容,你将学会如何创建你的第一个flask web应用,并且在自己的电脑上运行它。这是第一天的学习内容,所有内容的代码都将托管在github上,猫姐强烈建议各位同学在学习本课内容时,先跟着教程自己尝试手敲代码,遇到问题后再去查看猫姐github上的代码,如果问题实在不知道如何解决,可以在日志下面留言具体说明情况。
2. 运行环境准备
在开始写代码前,我们需要准备好flask web应用的运行环境,因此我们需要做3件事:1. 安装python;2. 安装虚拟开发环境;3. 安装flask框架。下面我们详细介绍一下这3个步骤的操作过程:
2.1 第一步:安装python
首先是安装Python环境,下面提供了适用于不同操作系统的python安装包链接,大家根据自己的情况安装即可:
安装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. 总结
学习完第一天的教程,我们掌握了如下技能:
- 如何创建虚拟开发环境
- 如何进入及退出虚开发拟环境
- 如何在虚拟开发环境中安装python包
- 如何组织并完成一个最简单的Flask应用
- 如何运行我们的Flask web应用程序
第二天的内容,我们将会带领大家一起了解什么是业务逻辑和响应逻辑的分离,为什么在Flask应用中需要使用模板(templates),第一天的内容就到这里,喜欢的同学们可以在下面点赞留言,或是访问我的博客地址:http://www.catonlinepy.tech/加入我们的QQ群进一步交流学习!
5. 代码的获取
大家可以到github上获取今天教程中的所有代码: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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。