+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-04(14)

2020-05(34)

2020-06(42)

2020-07(42)

2020-08(41)

Python flask框架教学:hello flask(干货分享)

发布于2021-02-28 19:29     阅读(734)     评论(0)     点赞(24)     收藏(5)


0

1

2

3

4

5

启动开发服务器

Flask内置了一个简单的开发服务器(由依赖包Werkzeug提供),足够 在开发和测试阶段使用。

 

Python爬虫、数据分析、网站开发等案例教程视频免费在线观看

https://space.bilibili.com/523606542

运行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中,上下文有两种,分别为程序上下文和请求上下文,后面我们会详细了解。

 

0

1

2

3

4

5

6



所属网站分类: 技术文章 > 博客

作者:希望

链接: https://www.pythonheidong.com/blog/article/864423/a4200efcb16a9564ff2a/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

24 0
收藏该文
已收藏

评论内容:(最多支持255个字符)