Flask 应用

使用 Flask 开发 Web 应用非常简单,首先需要在项目中导入 Flask 模块,然后创建 Flask 实例,最后运行 Flask 实例。 

1. 创建 Flask 项目

以下范例演示了一个简单的 Flask 应用:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
   return 'Hello World'

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

Flask 类的一个对象是我们的WSGI应用程序。

Flask 构造函数使用当前模块(__name __)的名称作为参数。

Flask 类的route()函数是一个装饰器,它告诉应用程序哪个URL应该调用相关的函数。

app.route(rule, options)
  • rule 参数表示与该函数的URL绑定。
  • options 是要转发给基础Rule对象的参数列表。

在上面的示例中,'/ ' URL与hello_world()函数绑定。

因此,当在浏览器中打开web服务器的主页时,将呈现该函数的输出。

最后,Flask 类的 run() 方法在本地开发服务器上运行应用程序。

app.run(host, port, debug, options)

所有参数都是可选的

序号 参数与描述
1

host

要监听的主机名。 默认为127.0.0.1(localhost)。设置为“0.0.0.0”以使服务器在外部可用

2

port

默认值为5000

3

debug

默认为false。 如果设置为true,则提供调试信息

4

options

要转发到底层的Werkzeug服务器。

2. 运行 Flask 范例

上面的代码保存到 Hello.py 文件,然后从 Python shell 执行:

python Hello.py

Python shell中的消息通知您:

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

在浏览器中打开上述URL(localhost:5000)。将显示“Hello World”消息。

这里注意,如果使用python自带的idle运行的时候可能会报以下错误: 

Traceback (most recent call last): 
File “C:/learn/python/xuexi/web/demoflask/app.py”, line 27, in 
app.run(); 
File “C:\Users\zhang\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py”, line 938, in run 
cli.show_server_banner(self.env, self.debug, self.name, False) 
File “C:\Users\zhang\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\cli.py”, line 629, in show_server_banner 
click.echo(message) 
File “C:\Users\zhang\AppData\Local\Programs\Python\Python36\lib\site-packages\click\utils.py”, line 217, in echo 
file = _default_text_stdout() 
File “C:\Users\zhang\AppData\Local\Programs\Python\Python36\lib\site-packages\click_compat.py”, line 621, in func 
rv = wrapper_func() 
File “C:\Users\zhang\AppData\Local\Programs\Python\Python36\lib\site-packages\click_compat.py”, line 385, in get_text_stdout 
rv = _get_windows_console_stream(sys.stdout, encoding, errors) 
File “C:\Users\zhang\AppData\Local\Programs\Python\Python36\lib\site-packages\click_winconsole.py”, line 261, in _get_windows_console_stream 
func = _stream_factories.get(f.fileno()) 
io.UnsupportedOperation: fileno

只要不用idle执行就不会出错了,不影响后续使用。改用cmd下Python执行或者pycharm等运行都能成功。

3. 调试模式

通过调用run()方法启动Flask应用程序。但是,当应用程序正在开发中时,应该为代码中的每个更改手动重新启动它。为避免这种不便,请启用调试支持

如果代码更改,服务器将自行重新加载。它还将提供一个有用的调试器来跟踪应用程序中的错误。

在运行或将调试参数传递给run()方法之前,通过将application对象的debug属性设置为True来启用Debug模式

app.debug = True
app.run()
app.run(debug = True)

下一章:Flask 路由

在 Flask 应用中,路由是指用户请求的 URL 与视图函数之间的映射。Flask 框架根据 HTTP 请求的 URL 在路由表中匹配预定义的 URL 规则,找到对应的视图函数,并将视图函数的执行结果返回 WSGI 服务器。