【Flask】带你快速入门Flask

简介: 【Flask】带你快速入门Flask

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 中自定义管理命令。

推荐使用 Python3 的最新版。

Flask 支持 Python3.4 及其以上的版本、Python2.7 和 PyPy 。


虚拟环境

virtualenv介绍

也许 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

我们可以执行如下命令升级 pip 和 virtualenv 到最新版:

sudo pip3 install -U pip virtualenv

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

pip3 freeze | grep virtualenv

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

1.png

创建虚拟环境

创建以python3为基础解释器的virtualenv的虚拟环境,并存储到venv文件夹下

virtualenv -p python3 venv

2.png

我们先看虚拟环境下目录三层的基础结构

3.png


激活虚拟环境

source venv/bin/activate

进入虚拟环境后,命令行提示符前面会有 (venv) 字样,它就是虚拟环境的名字。


在虚拟环境内部,会复刻我们系统的python,参考版本,pip 就是其包管理工具。


4.png

安装 Flask

pip install flask

5.png

在虚拟环境下就可以看到我们的flask包了,包括之前说说的jinja2等

6.png


一个案例快速入手

创建应用

一个最小的应用看起来像这样,在当前目录下新建 hello.py 文件

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    return 'Hello, World!'


那么这段代码做了什么?


  1. 首先我们导入了类 Flask。这个类的实例化将会是我们的 WSGI 应用。
  2. 接着,我们创建一个该类的实例。
  3. 第一个参数是应用模块或包的名称,这样 Flask 才会知道去哪里寻找模板、静态文件等等。
  4. 如果你使用的是单一的模块(就如本例),第一个参数应该使用 __name__。
  5. 我们使用装饰器 route() 告诉 Flask 哪个 URL 才能触发我们的函数。
  6. 即路由
  7. 定义一个函数,该函数名也是用来给特定函数生成 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

用于测试已经足够了,但可能你并不想用于生产环境。更多配置可以参考开发者选项。


我们也可以自定义运行的host和端口


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

7.png8.png


调试模式

使用 flask 命令行可以非常方便的启动一个本地开发服务器,但是每次修改代码后你都需要手动重启服务器。


通过前面的启动后输出显示可以发现 Environment 为 production,同时调试模式未开启 Debug mode: off.


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


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

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

9.png

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


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


目录
相关文章
|
6月前
|
Python
python3之flask快速入门教程Demo
python3之flask快速入门教程Demo
83 6
|
7月前
|
关系型数据库 MySQL 数据库
Web 框架 Flask 快速入门(三)数据库-MySQL
数据库 1、数据库的安装与配置 这节用到flask的两个扩展,使用pip安装扩展就行
209 0
|
7月前
|
前端开发 Python
Web 框架 Flask 快速入门(二)表单
🌴 表单 1、表单介绍 当我们在网页上填写账号密码进行登录的时候,就是在填写一个“表单”。web表单是web应用程序种最基本的功能。 2、表单的简单实现 下面的代码实现了这样的功能:
77 0
|
7月前
|
开发框架 Python
Web 框架 Flask 快速入门(一)flask基础与模板
🌴 Flask基础和模板 1、web框架的作用 避免重复造轮子,app程序不必关心于服务器的沟通方式,而专注于核心的业务逻辑实现。 稳定,可扩展性强
134 0
|
数据库管理 Python
Python Web框架Flask快速入门
Python Web框架Flask快速入门
238 2
|
XML JSON JavaScript
Python基础之Flask快速入门2
Python基础之Flask快速入门2
107 0
|
前端开发 Python
Python基础之Flask快速入门
Python基础之Flask快速入门
101 0
|
安全 Python Windows
windows python web flask 模板开发快速入门
windows python web flask 模板开发快速入门
windows python web flask 模板开发快速入门
|
数据库 Python JSON
【Flask】Python-Flask快速入门Helloworld
【Flask】Python-Flask快速入门Helloworld
121 1
|
Python
Flask应用的基本结构·快速入门Flask
所有Flask应用都必须创建一个应用实例。Web服务器使用一种名为Web服务器网关接口(WSGI,Web server gateway interface,读作“wiz-ghee”)的协议,把接收自客户端的所有请求都转交给这个对象处理。应用实例是Flask类的对象,通常由下述代码创建:
111 0
Flask应用的基本结构·快速入门Flask