温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python flask框架怎么使用

发布时间:2021-11-22 11:44:16 来源:亿速云 阅读:174 作者:iii 栏目:大数据

本篇内容介绍了“Python flask框架怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

运行flask

Flask 通过依赖包 Click内置了一个CLI(Command Line Interface,命令行交互界面)系统。当我们安装Flask后,会自动添加一个flask命令脚本, 我们可以通过flask命令执行内置命令、扩展提供的命令或是我们自己定义 的命令。其中,flask run命令用来启动内置的开发服务器

(helloflask)  $ flask run
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

确保执行命令前激活了虚拟环境(pipenv shell),否则需要使用 pipenv run flask run命令启动开发服务器。后面将不再提示。

flask run命令运行的开发服务器默认会监听 http://127.0.0.1:5000/ 地址 (按Crtl+C退出),并开启多线程⽀持。当我们打开浏览器访问这个地址时,会看到⽹页上显示“Hello,flask!”

localhost与127.0.0.1

  • http://127.0.0.1 即 localhost ,是指向本地机的IP地址,一般用来测试。

  • Flask默认使用5000端口,上面的地址可以使 用http://localhost:5000/ 。

  • 除了地址不同外, 两者没有实际区别,即域名和IP地址的映射关系。

最⼩的Flask程序

from flask import Flask  # ⑴

app = Flask(__name__)  # ⑵


@app.route('/')  # ⑶
def index():  # ⑷
    return 'Hello flask !'  # ⑸


if __name__ == '__main__':
    app.run()  # ⑹

启动服务之后,就可以在浏览器中访问了。整个请求的处理过程如下所示:

  1. 当用户在浏览器地址栏访问这个地址,在这里即 http://127.0.0.1:5000/

  2. 服务器解析请求,发现请求 URL 匹配的 URL 规则是 /,因此调用对应的处理函数 hello()

  3. 获取 hello() 函数的返回值,处理后返回给客户端(浏览器)

  4. 浏览器接受响应,将其显示在窗口上

代码逻辑

⑴ 首先我们从 flask 包导入 Flask 类

from flask import Flask  # ⑴

⑵ 通过实例化这个类,创建一个程序对象 app:

app = Flask(__name__)  # ⑵

⑶ 使用 app.route() 装饰器将函数绑定对应的 URL,当用户在浏览器访问这个 URL 的时候,就会触发这个函数,获取返回值,并把返回值显示到浏览器窗口。

⑷ 装饰器注册的处理函数,这个函数是处理某个请求的处理函数,Flask 官方把它叫做视图函数(view funciton)!你可以理解为 请求处理函数

⑸ 返回响应内容

# 填入 app.route() 装饰器的第一个参数是 URL 规则字符串,这里的 / 指的是根地址。
@app.route('/')  # ⑶
def index():  # ⑷
    return 'Hello flask !'  # ⑸

⑹ Flask应用程序实例的 run 方法启动 WEB 服务器

if __name__ == '__main__':
    app.run()  # ⑹

更多的启动选项

使服务器外部可见

我们在上面启动的Web服务器默认是对外不可见的,可以在run命令后 添加--host选项将主机地址设为0.0.0.0使其对外可见:

$ flask run --host=0.0.0.0

这会让服务器监听所有外部请求。个人计算机(主机)一般没有公⽹ IP(公有地址),所以你的程序只能被局域⽹内的其他用户通过你的个人 计算机的内⽹IP(私有地址)访问,比如你的内⽹IP为192.168.191.1。当局域⽹内的其他用户访问http://192.168.191.1:5000 时,也会看到浏览器里 显示一行“Hello,Flask!”。

改变默认端口

Flask提供的Web服务器默认监听5000端口,你可以在启动时传入参数来改变它:

$ flask run --port=8000

这时服务器会监听来自8000端口的请求,程序的主页地址也相应变成 了http://localhost:8000/ 。

将参数保存到文件

执行 flask run 命令时的 host 和 port 选项也可以通过环境变量 FLASK_RUN_HOST 和 FLASK_RUN_PORT 设置。事实上,Flask内置的命令都可以使用这种模式定义默认选项值, 即“FLASK_<COMMAND>_<OPTION>”

如果想不需要每次都指定,可以内容保存到当前目录下的 .flaskenv 或者是 .env 文件中(需要安装 python-dotenv )。

# 一些 flask 内置命令
# 需要提前安装 python-dotenv 
FLASK_ENV=development       # 设置当前开发模式
FLASK_RUN_PORT = 5050       # 设置运行的端口
FLASK_RUN_HOST = 0.0.0.0    # 设置监听的 ip

也可以使用 flask --help 命令查看所有可用的命令。

设置运行环境

开发环境(development enviroment)和生产环境(production enviroment)是我们后面会频繁接触到的概念。开发环境是指我们在本地 编写和测试程序时的计算机环境,而生产环境与开发环境相对,它指的是 ⽹站部署上线供用户访问时的服务器环境

根据运行环境的不同,Flask程序、扩展以及其他程序会改变相应的行 为和设置。为了区分程序运行环境,Flask提供了一个FLASK_ENV环境变 量用来设置环境,默认为 production(生产)。在开发时,我们可以将其设 为development(开发),这会开启所有⽀持开发的特性。为了方便管理, 我们将把环境变量 FLASK_ENV 的值写入 .flaskenv 文件中:

FLASK_ENV=development

现在启动程序,你会看到下面的输出提示:

(helloflask) $ flask run
 * Environment: development
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 161-372-375
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Python Shell

有许多操作需要在Python Shell(即Python交互式解释器)里执 行。在开发Flask程序时,我们并不会直接使用python命令启动Python Shell,而是使用flask shell命令:

(helloflask) $ flask shell
Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)] on win32
App: app [development]
Instance: C:\Users\Administrator\Desktop\helloflask\instance
>>>

和其他 flask 命令相同,执行这个命令前我们要确保程序实例可以被正常找到。

如果代码⽚段前的提示符为三个大于号,即“>>>”,那么就表示这些代码需要在使用flask shell命令打开的Python Shell中执行。

使用flask shell命令打开的Python Shell自动包含程序上下文,并且已经导入了app实例:

>>> app
<Flask 'app'>
>>> app.name
'app'
>>>

上下文(context)可以理解为环境。为了正常运行程序,一些操作相关的状态和数据需要被临时保存下来,这些状态和数据被统称为上下文。在Flask中,上下文有两种,分别为程序上下文和请求上下文。

“Python flask框架怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI