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 服务器。