zoukankan      html  css  js  c++  java
  • flask之基础概念

    [应用]
    一个 Flask 应用是一个 Flask 类的实例。
    可以在一个被称为应用工厂的函数内部创建 Flask实例。
    所有应用相关的配置、注册和其他设置都会在函数内部完成,然后返回这个应用。
    __init__.py 有两个作用:一是包含应用工厂;二是 告诉 Python 应用文件夹应当视作为一个包。
    __name__ 是当前 Python 模块的名称。
    instance_relative_config=True 告诉应用配置文件是相对于 instance folder 的相对路径。
    app.config.from_mapping() 设置一个应用的缺省配置
    app.config.from_pyfile() 使用 config.py 中的值来重载缺省配置。
    可以通过使用 flask 命令来运行应用。

    [视图]
    视图是一个应用对请求进行响应的函数。
    Flask 通过模型把进来的请求 URL 匹配到 对应的处理视图。
    视图返回数据,Flask 把数据变成出去的响应。
    Flask 也可以反 过来,根据视图的名称和参数生成 URL。
    before_app_request() 注册一个在视图函数之前运行的函数,不论其 URL 是什么。

    [蓝图]
    Blueprint 是一种组织一组相关视图及其他代码的方式。
    把视图及其他代码注册到蓝图,然后在工厂函数中把蓝图注册到应用。
    使用 app.register_blueprint() 导入并注册蓝图。
    url_for()根据视图的名称生成相应的URL 。

    [模板]
    模板是包含静态数据和动态数据占位符的文件。Flask 使用 Jinja 模板库来渲染模板。
    在 Flask 中, Jinja 被配置为 自动转义 HTML 模板中的任何数据。
    任何用户输入的可能出现歧意的字符,如 < 和 > ,会被 转义 ,替换为 安全 的值。
    任何位于 {{ 和 }} 这间的东西是一个会输出到最终文档的静态式。
    {% 和 %} 之间的东西表示流程控制语句,如 if 和 for 。
    g 在模板中自动可用。
    url_for() 也是自动可用的。
    为了更好地管理文件,属于某个蓝图 的模板会被放在与蓝图同名的文件夹内。

    [静态文件]
    Flask 自动添加一个 static 视图,视图使用相对于 flaskr/static 的相对路径。

    [session]
    session 是一个dict,它用于储存横跨请求的值。
    会话数据被储存到一个向浏览器发送的 cookie 中,在后继请求中,浏览器会返回它。
    Flask 会安全对数据进行 签名 以防数据被篡改。

    【情境如何工作】
    在内部,请求和应用程序情境实质是 _request_ctx_stack 和 _app_ctx_stack 堆栈。
    当情境被压入堆栈时,依赖它们的代理可用并指向堆栈顶部情境中的信息。

    当请求开始时,将创建并推送 RequestContext ,如果该应用程序的情境尚不是顶级情境,则该请求会首先创建并推送 AppContext。
    在推送这些情境时, current_app、 g 、 request和 session代理可用于处理请求的原始线程。

    在分派请求并生成和发送响应之后,会弹出请求情境,然后弹出应用情境。
    在紧临弹 出之前,会执行teardown_request()注册的函数 和 teardown_appcontext()注册的函数。

    1、在每次请求之前, before_request() 函数都会被调用。如果其 中一个函数返回了一个值,则其他函数将被跳过。
    返回值被视为响应,并且视图 函数不会被调用。
    2、如果 before_request() 函数没有返回响应,则调用匹配路由的 视图函数并返回响应。
    3、视图的返回值被转换为实际的响应对象并传递给 after_request() 函数。每个函数都返回一个修改过的或新的响应对象。
    4、返回响应后,将弹出情境,该情境调用 teardown_request() 和 teardown_appcontext() 函数。
    即使在上面任何一处引发了未处 理的异常,也会调用这些函数。

    在请求结束时,会弹出请求情境,并且与其关联的所有数据都将被销毁。
    当开发服务器以开发模式运行时( FLASK_ENV 环境变量设置为 'development'),错误和数据将被保留并显示在交互式调试器中。
    不要在生产环境中启用 PRESERVE_CONTEXT_ON_EXCEPTION ,因为它会导致 应用在发生异常时泄漏内存。

    [请求情境]
    当 Flask 应用处理请求时,它会根据从 WSGI 服务器收到的环境创建一个 Request 对象。
    处理请求时, Flask 自动 推送 请求情境。
    在请求期间运行的视图函数,错误处 理器和其他函数将有权访问 request 代理,该请求代理指向当前请求的请求对象。
    请求情境在请求期间跟踪请求级数据。不是将请求对象传递给请求期间运行的每个函数,而是访问request 和 session代理。

    [应用情境]
    g 表示“全局”的意思,但是指的是数据在 情境 之中是全局的。 g 中的数据在情境结束后丢失,因此它不是在请求之间存储数据的恰当位置。
    处理请求时, Flask 自动 推送 应用情境。在请求期间运行的视图函数、错误处 理器和其他函数将有权访问 current_app
    当应用情境被弹出时,应用将调用使用 teardown_appcontext() 注册的函数。
    如果 signals_available 为真,则发送以下信号: appcontext_pushed 、 appcontext_tearing_down 和 appcontext_popped 。

  • 相关阅读:
    内网/局域网 DNS获取不正确
    Qt5.7 + D2D渲染引擎。 画面闪烁,几乎没图像显示
    安网路由器 移动宽带和电信宽带混用问题解决
    安网路由器 静态IP和PPOE混用时,如果设置了路由器定时重启可能导致路由器罢工
    Qt5.7+VS2015环境下使用QtCreator编译QtAV视频库
    Android Gradle编译so库或运行时出现 text relocations 崩溃的正确解决方法
    使用Jenkins + shell(gradle)快速搭建 Android 构建机
    Android 获得控件在屏幕中的坐标
    Mac 共享WiFi给任意设备(Android,Iphone等等)
    股票、外汇、期货、数字货币小总结
  • 原文地址:https://www.cnblogs.com/zxpo/p/9728899.html
Copyright © 2011-2022 走看看