• virtualenv指定Python版本

    1. virtualenv venv --python=python3.6
  • 导出和导入环境依赖包

    ```

    导出

    pip freeze >requirements.txt

导入

pip install -r requirements.txt

  1. - <a name="g27vas"></a>
  2. #### app = Flask(**name**) 解析

!/usr/local/bin/python

coding=utf-8

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=9000)
‘’’’’ 第4行,引入Flask类,Flask类实现了一个WSGI应用 第5行,app是Flask的实例,它接收包或者模块的名字作为参数,但一般都是传递name。 让flask.helpers.get_root_path函数通过传入这个名字确定程序的根目录,以便获得静态文件和模板文件的目录。 第7~9行,使用app.route装饰器会将URL和执行的视图函数的关系保存到app.url_map属性上。 处理URL和视图函数的关系的程序就是路由,这里的视图函数就是hello_world。 第11行,使用这个判断可以保证当其他文件引用这个文件的时候(例如“from hello import app”)不会执行这个判断内的代码,也就是不会执行app.run函数。 第12行,执行app.run就可以启动服务了。默认Flask只监听虚拟机的本地127.0.0.1这个地址,端口为5000。 而我们对虚拟机做的端口转发端口是9000,所以需要制定host和port参数,0.0.0.0表示监听所有地址,这样就可以在本机访问了。 服务器启动后,会调用werkzeug.serving.run_simple进入轮询,默认使用单进程单线程的werkzeug.serving.BaseWSGIServer处理请求, 实际上还是使用标准库BaseHTTPServer.HTTPServer,通过select.select做0.5秒的“while TRUE”的事件轮询。 当我们访问“http://127.0.0.1:9000/”,通过app.url_map找到注册的“/”这个URL模式,就找到了对应的hello_world函数执行,返回“hello world!”,状态码为200。 如果访问一个不存在的路径,如访问“http://127.0.0.1:9000/a”,Flask找不到对应的模式,就会向浏览器返回“Not Found”,状态码为404 ‘’’

  1. <a name="m5iupg"></a>
  2. ## 请求对象
  3. Flask 通 过 上 下 文 变 量 request 对 外 开 放 请 求 对 象。 这 个 对 象 非 常 有 用, 包 含 客 户 端 发 送 的 HTTP 请 求 的 全 部 信 息。 Flask 请 求 对 象 中 最 常 用 的 属 性 和 方 法 见 表
  4. | **属性或方法** | **说明** |
  5. | --- | --- |
  6. | form | 一 个 字 典, 存 储 请 求 提 交 的 所 有 表 单 字 段 |
  7. | args | 一 个 字 典, 存 储 通 过 URL 查 询 字 符 串 传 递 的 所 有 参 数 |
  8. | alues | 一 个 字 典, form 和 args 的 合 集 |
  9. | cookies | 一 个 字 典, 存 储 请 求 的 所 有 cookie |
  10. | headers | 一 个 字 典, 存 储 请 求 的 所 有 HTTP 首 部 |
  11. | files | 一 个 字 典, 存 储 请 求 上 传 的 所 有 文 件 |
  12. | get_data() | 返 回 请 求 主 体 缓 冲 的 数 据 |
  13. | get_json() | 返 回 一 个 Python 字 典, 包 含 解 析 请 求 主 体 后 得 到 的 JSON |
  14. | blueprint | 处 理 请 求 的 Flask 蓝 本 的 名 称 |
  15. | endpoint | 处 理 请 求 的 Flask 端 点 的 名 称; Flask 把 视 图 函 数 的 名 称 用 作 路 由 端 点 的 名 称 |
  16. | method | HTTP 请 求 方 法, 例 如 GET 或 POST |
  17. | scheme | URL 方 案( http 或 https ) |
  18. | is_secure | 通 过 安 全 的 连 接( HTTPS) 发 送 请 求 时 返 回 True |
  19. | host | 请 求 定 义 的 主 机 名, 如 果 客 户 端 定 义 了 端 口 号, 还 包 括 端 口 号 |
  20. | path | URL 的 路 径 部 分 |
  21. | query_string | URL 的 查 询 字 符 串 部 分, 返 回 原 始 二 进 制 值 |
  22. | full_path | URL 的 路 径 和 查 询 字 符 串 部 分 |
  23. | url | 客 户 端 请 求 的 完 整 URL |
  24. | base_url | 同 url ,但 没 有 查 询 字 符 串 部 分 |
  25. | remote_addr | 同 url ,但 没 有 查 询 字 符 串 部 分 |
  26. | environ | 请 求 的 原 始 WSGI 环 境 字 典 |
  27. <a name="gggsny"></a>
  28. ## 响应对象
  29. 如 果 不 想 返 回 由 1 个、 2 个 或 3 个 值 组 成 的 元 组, Flask 视 图 函 数 还 可 以 返 回 一 个 响 应 对 象 。make_response() 函 数 可 接 受 1 个、 2 个 或 3 个 参 数( 和 视 图 函 数 的 返 回 值 一 样), 然 后 返 回 一 个 等 效 的 响 应 对 象。 有 时 我 们 需 要 在 视 图 函 数 中 生 成 响 应 对 象, 然 后 在 响 应 对 象 上 调 用 各 个 方 法, 进 一 步 设 置 响 应。 下 例 创 建 一 个 响 应 对 象, 然 后 设 置 cookie:

from flask import make_response @app.route(‘/‘) def index(): response = make_response(‘ < h1 > This document carries a cookie! </ h1 >’) response.set_cookie(‘ answer’, ‘42’) return response ```

响 应 对 象 最 常 使 用 的 属 性 和 方 法 见 表

属性或方法 说明
status_code HTTP 数 字 状 态 码
headers 一 个 类 似 字 典 的 对 象, 包 含 随 响 应 发 送 的 所 有 首 部
set_cookie() 为 响 应 添 加 一 个 cookie
delete_cookie() 删 除 一 个 cookie
content_length 响 应 主 体 的 长 度
content_type 响 应 主 体 的 媒 体 类 型
set_data() 使 用 字 符 串 或 字 节 值 设 定 响 应
get_data() 获 取 响 应 主 体