flask完整

本文介绍了如何使用Flask框架创建一个简单的WSGI应用。首先导入Flask类并实例化,指明应用的根目录。然后使用装饰器定义路由和处理函数。在本地运行应用时,需设置环境变量FLASK_APP指定应用入口,并可选地启用调试模式以允许外部访问。调试模式下,代码变更会自动重载,错误时提供调试器。但请注意,调试器不应在生产环境中使用,因为它存在安全风险。
摘要由CSDN通过智能技术生成
$ mkdir myproject && cd myproject
$ virtualenv -p /usr/bin/python3 venv

$ . venv/bin/activate

pip3 install flask==1.0.2
python3
import flask

开发者配置

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 的环境变量来告诉终端需要运行哪个应用,在终端执行如下命令: (大家请注意,记得要切回 Code 目录,才能调用

$ export FLASK_APP=hello.py
$ flask run
* Serving Flask app "hello.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)

当你运行服务器,你会注意到它只能从你自己的计算机上访问,网络中其它任何的地方都不能访问。这是因为默认情况下是 debug 模式,只有应用中的一个用户可以执行你计算机上的任意 Python 代码。

如果你关闭 debug 或者信任你所在网络上的用户,可以让你的服务器对外公开可用,只需要在命令行中添加参数 --host=0.0.0.0:

flask run --host=0.0.0.0
* Serving Flask app "hello.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://0.0.0.0:5000/ (Press CTRL+C to quit)

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

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

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

$ export FLASK_ENV=development
$ export FLASK_DEBUG=1
$ flask run
 * Serving Flask app "hello.py" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 221-951-275

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

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

注意

尽管交互式调试器(debugger)不能在分叉(forking)环境下工作(这使得它几乎不可能在生产服务器上使用),它依然允许执行任意代码。这使它成为一个巨大的安全风险,因此它绝对不能用于生产环境。

运行中的调试器的截图,从截图可以看出在页面上有终端可以执行交互式命令

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值