flask web 笔记 运行及调试模式

栏目:DIY手工 来源:文章代写 时间:2019-10-30
flask web 笔记 运行及调试模式

运行及调试模式

知识点

  • Flask 运行及调试

环境

  • Python 3.5
  • Flask 1.0.2

首先在环境中安装 flask1.0.2:

sudo apt-get update
sudo pip3 install flask==1.0.2

一个最小的应用

一个最小的应用看起来像这样,在 /home/shiyanlou/Code 目录下新建 hello.py 文件,并向其中写入如下代码:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
flask web 笔记 运行及调试模式

flask 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 目录,才能调用,在后续课程实例代码中,将不会再提醒)

$ cd /home/shiyanlou/Code

$ export FLASK_APP=hello.py

$ flask run

flask web 笔记 运行及调试模式

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

现在使用浏览器浏览http://127.0.0.1:5000/,将会看到页面上的 Hello, World!。

请按Ctrl+c来停止服务器。

外部可见服务器

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

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

flask web 笔记 运行及调试模式

flask run --host=0.0.0.0

调试模式

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

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

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

$ export FLASK_ENV=development

$ export FLASK_DEBUG=1

$ flask run

flask web 笔记 运行及调试模式

调试模式

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

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

注意

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

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

相关文章
评论
新版评论功能开发中
头条推荐
最新资讯