一.Flask 的简单介绍
Flask 是一个基于 Python 开发并且依赖 jinja2 模板和 Werkzeug WSGI 服务的一个微型框架, 对于 Werkzeug 本质是 Socket 服务端, 其用于接收 http 请求并对请求进行预处理, 然后触发 Flask 框架, 开发人员基于 Flask 框架提供的功能对请求进行相应的处理, 并返回给用户, 如果要返回给用户复杂的内容时, 需要借助 jinja2 模板来实现对模板的处理, 即: 将模板和数据进行渲染, 将渲染后的字符串返回给用户浏览器.
"微"(micro) 并不表示你需要把整个 web 应用塞进单个 Python 文件 (虽然确实可以 ), 也不意味着 Flask 在功能上有所欠缺. 微框架中的 "微" 意味着 Flask 旨在保持核心简单而易于扩展. Flask 不会替你做出太多决策 -- 比如使用何种数据库. 而那些 Flask 所选择的 -- 比如使用何种模板引擎 -- 则很容易替换. 除此之外的一切都由可由你掌握. 如此, Flask 可以与您珠联璧合.
默认情况下, Flask 不包含数据库抽象层, 表单验证, 或是其它任何已有多种库可以胜任的功能. 然而, Flask 支持用扩展来给应用添加这些功能, 如同是 Flask 本身实现的一样. 众多的扩展提供了数据库集成, 表单验证, 上传处理, 各种各样的开放认证技术等功能. Flask 也许是 "微小" 的, 但它已准备好在需求繁杂的生产环境中投入使用.
二.Flask 的相关依赖
1. 依赖
当安装 Flask 时, 以下配套软件会被自动安装.
• Werkzeug 用于实现 WSGI, 应用和服务之间的标准 Python 接口.
• Jinja 用于渲染页面的模板语言.
• MarkupSafe 与 Jinja 共用, 在渲染页面时用于避免不可信的输入, 防止注入攻击.
• ItsDangerous 保证数据完整性的安全标志数据, 用于保护 Flask 的 session cookie.
• Click 是一个命令行应用的框架. 用于提供 flask 命令, 并允许添加自定义管理命令.
2. 可选依赖
以下配套软件不会被自动安装. 如果安装了, 那么 Flask 会检测到这些软件.
• Blinker 为信号 提供支持.
• SimpleJSON 是一个快速的 JSON 实现, 兼容 Python's JSON 模块. 如果安装了这个软件, 那么会优先
使用这个软件来进行 JSON 操作.
• python-dotenv 当运行 flask 命令时为通过 dotenv 设置环境变量 提供支持.
• Watchdog 为开发服务器提供快速高效的重载.
三. flask 安装
在虚拟环境下使用下面命令安装 flask:
pip install flask
与时俱进 [最新版的 flask 代码]
如果想要在正式发行之前使用最新的 Flask 开发版本, 可以使用如下命令从主分支安装或者更新代码:
$pip install -U https://github.com/pallets/flask/archive/master.tar.gz
四.最简单的 flask 应用
创建一个 hello_world.py 的文件:
- from flask import Flask
- App = Flask(__name__)
- @App.route("/")
- def hello_world():
- return "hello world!"
- if __name__ == '__main__':
- App.run(host='0.0.0.0', port=5000, debug=True)
- # 运行 python hello_world.py
- # 使用以下 url 访问 可以得到打印结果
- # http://127.0.0.1:5000/
访问的结果:
最简单应用的解释:
1. 首先我们导入了 Flask 类. 该类的实例将会成为我们的 WSGI 应用.
2. 接着我们创建一个该类的实例. 第一个参数是应用模块或者包的名称. 如果你使用一个单一模块 (就像本例), 那么应当使用__name__, 因为名称会根据这个模块是按应用方式使用还是作为一个模块导入而发生变化 (可能是'__main__', 也可能是实际导入的名称). 这个参数是必需的, 这样 Flask 才能知道在哪里可以找到模板和静态文件等东西.
3. 然后我们使用 route() 装饰器来告诉 Flask 触发函数的 URL.
4. 函数名称被用于生成相关联的 URL. 函数最后返回需要在用户浏览器中显示的信息.
再写一个简单的练习 Index Page:
代码如下:
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- __author__ = "hsz"
- from flask import Flask
- App = Flask(__name__)
- @App.route("/index")
- def index():
- return "Index Page!"
- if __name__ == "__main__":
- App.run(host='127.0.0.1', port=5000)
- #运行后使用下面 url 访问
- # http://127.0.0.1:5000/index
来源: http://www.bubuko.com/infodetail-3350075.html