Flask介绍及安装(一)
本文最后更新于 598 天前,内容如有失效请评论区留言。

[toc]

本文源自蓝桥课程Flask Web框架基础入门 第一章 Flask介绍及安装

注:教程中部分图片来自自己的尝试,请自行鉴别

实验简介

本课程为大家简单介绍 Python 的 Web 开发框架 Flask 的基本使用,内容较为简单,需要大家具有 Python3 的编程基础以及简单的前端知识。本节实验主要内容是 Flask 框架简介与安装。

知识点

  • Flask 框架简介
  • virtualenv 创建虚拟环境
  • 一个小的 Flask 应用

适合人群

本课程适合拥有 Python 基础知识以及完成相关前置课程,并想进一步加深对 Python 学习的同学。

Flask 简介

Flask 是一个轻量级的 Web 应用框架, 使用 Python 编写。基于 Werkzeug WSGI 工具箱和 Jinja2 模板引擎。使用 BSD 授权。Flask 也被称为 microframework ,因为它使用简单的核心,用 extension 增加其它功能。Flask 没有默认使用的数据库、窗体验证工具。然而,Flask 保留了扩增的弹性,可以用 Flask-extension 加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。

当安装 Flask 时,以下组件也会自动安装:

  • Werkzeug: WSGI(web 服务器网关接口)工具,是介于应用和服务器之间标准的接口工具。
  • Jinja: web 前端页面中使用的模板语言。
  • MarkupSafe: 与 Jinja 配合使用,当表单页面跳转时会进行验证从而避免遭遇不信任的输入带来的攻击。
  • ItsDangerous: 安全地注入数据以确保数据的完整性,通常用于保护 Flask 的 session cookie。
  • Click: 一个解析命令行的应用,它支持在 Flask 中自定义管理命令。

Python 版本

我们推荐使用 Python3 的最新版。Flask 支持 Python3.4 及其以上的版本、Python2.7 和 PyPy 。我们的实验环境中使用的是 Python3.5 。

预备知识

首先需要掌握 Python 基础知识,然后需要熟悉基本的数据库操作,最好也了解点 WEB 前端(HTML + CSS + JavaScript)。如果有 WEB 应用的开发经验,上手会很快。

虚拟环境

也许 virtualenv 是你在开发中最愿意使用的,如果你在生产机器上有 shell 权限的时候,也会愿意用上 virtualenv。

virtualenv 解决了什么问题?如果你像我一样喜欢 Python 的话,有很多机会在基于 Flask 的 Web 应用外的其它项目上使用 Python。 然而项目越多,越有可能在不同版本的 Python,或者至少在不同 Python 库的版本上工作。我们需要面对这样的事实:库破坏向后兼容性的情况相当常见,而且零依赖的正式应用也不大可能存在。如此,当你的项目中的两个或更多出现依赖性冲突,你会怎么做?

virtualenv 的出现解决这一切!virtualenv 能够允许多个不同版本的 Python 安装,每一个服务于各自的项目。它实际上并没有安装独立的 Python 副本,只是提供了一种方式使得环境保持独立。让我们见识下 virtualenv 怎么工作的。

安装 virtualenv

创建隔离的虚拟环境的第三方库有很多种,其中 virtualenv 用户体验最好也是用户量最大的一个。在 Windows 、macOS 或 Linux 操作系统中,安装 Python 解释器时会自动安装包管理工具 pip 。所以通常而言,使用如下命令即可很容易地安装 virtualenv 库:

sudo pip3 install virtualenv

image-20220319170416179

实验环境中已经安装了 Python3.5 及其 pip ,也安装了 virtualenv ,我们可以执行如下命令升级 pip 和 virtualenv 到最新版:

sudo pip3 install -U pip virtualenv

执行如下命令可以查看 virtualenv 的版本:

pip3 freeze | grep virtualenv

操作截图如下:

1

image-20220319170719720

如上图所示,我们已经安装了 virtualenv 目前最新版本 20.4.3 。

创建虚拟环境

我们的 WebIDE 环境默认目录为 /home/project ,我们后续的实验均在此目录下进行。

img

现在执行如下命令创建虚拟环境:

virtualenv -p python3 venv

操作截图如下:

图片描述

如上图所示,virtualenv 的命令中,-p 选项后面是选择解释器的版本为 python3 ,而 python3 指向的就是 实验环境 Python3.5 版本。最后的参数 venv 是虚拟环境的名字,执行此命令会创建一个虚拟环境的目录,目录名就是 venv,侧边栏可以看到生成的 venv 文件夹 。

执行如下命令激活虚拟环境,也可以说是启动虚拟环境或进入虚拟环境:

source venv/bin/activate

进入虚拟环境后,命令行提示符前面会有 (venv) 字样,它就是虚拟环境的名字。在虚拟环境内部,python 就指向 Python3.5 ,pip 就是其包管理工具。

操作截图如下:

图片描述

image-20220319171158663

安装 Flask

在虚拟环境中安装目前最新的 Flask 框架 1.1.2 版本,执行如下命令:

$ pip install flask==1.1.2

其中双等号后面即为版本号,如果不写版本号,则默认安装适用于 Python3.5 的最新版本。

image-20220319171352065

一个最小的 Web 应用

创建应用

一个最小的应用看起来像这样,在 /home/project 目录下新建 hello.py 文件,可以在命令行中使用touch hello.py新建,或者在侧边栏中点击右键 New File 创建文件并向其中写入如下代码:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

那么这段代码做了什么?

  1. 首先我们导入了类 Flask。这个类的实例化将会是我们的 WSGI 应用。
  2. 接着,我们创建一个该类的实例。第一个参数是应用模块或包的名称,这样 Flask 才会知道去哪里寻找模板、静态文件等等。如果你使用的是单一的模块(就如本例),第一个参数应该使用 __name__
  3. 我们使用装饰器 route() 告诉 Flask 哪个 URL 才能触发我们的函数。
  4. 定义一个函数,该函数名也是用来给特定函数生成 URLs,并且返回我们想要显示在用户浏览器上的信息。

使用 Python 解释器运行这个文件,注意这个文件不能取名为 flask.py ,因为这会与 Flask 本身冲突。

运行这个应用既可以使用 flask 命令也可以使用 Python 的 -m 调用 flask,在运行之前你需要设置 FLASK_APP 的环境变量来告诉终端需要运行哪个应用。

在终端执行如下命令:

export FLASK_APP=hello.py
flask run

也可以使用如下命令启动应用:

export FLASK_APP=hello.py
python3 -m flask run

以上的命令启动了一个非常简单的 flask 内置服务器,用于测试已经足够了但可能你并不想用于生产环境。更多配置可以参考开发者选项

实验楼在 WebIDE 环境中提供了一个 “Web 服务” 功能,可以直接进入到实验环境中 8080 端口运行的网站。所以在启动应用的时候需要提供端口号为 8080 的选项 -p 8080 ,此外还需要将 IP 地址设置为 0.0.0.0 以支持实验环境的随机 IP 地址被外部环境访问。

在实验环境中执行如下命令:

export FLASK_APP=hello.py
flask run -h 0.0.0.0 -p 8080

操作截图如下:

图片描述

点击右侧工具栏 Web 服务按钮,即可在浏览器上打开页面:

img

回到实验环境,在终端按快捷键 Ctrl + C 来停止服务器。

调试模式

使用 flask 命令行可以非常方便的启动一个本地开发服务器,但是每次修改代码后你都需要手动重启服务器。通过前面的启动后输出显示可以发现 Environmentproduction,同时调试模式未开启 Debug mode: off

这样做并不好,Flask 能做得更好。如果启用了调试支持,在代码修改后服务器能够自动重载,并且如果发生错误,它会提供一个有用的调试器。

为了让所有的开发者特征可用(包括调试模式),在运行服务器之前可以设置 FLASK_ENV 环境变量为 development

export FLASK_ENV=development
export FLASK_DEBUG=1
flask run -h 0.0.0.0 -p 8080

上述命令做了以下几件事:

  1. 使调试器(debugger)可用
  2. 启动了代码改变自动的热加载
  3. 在 flask 应用中开启了 debug 模式

我的结果:

image-20220319212634108

image-20220319212700433

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇