Flask 记录应用错误
0.3 新版功能. 应用故障,服务器故障。早晚你会在产品中看见异常。即使你的代码是 100% 正确的,你仍然会不时看见异常。为什么?因为涉及的所有一切都会出现故障。这里给出一些完美…
Flask 错误邮件
如果你的应用在生产模式下运行(会在你的服务器上做),默认情况下,你不会看见任何日志消息。为什么会这样?Flask 试图实现一个零配置框架。如果没有配置,日志会存放在哪?猜测不是个好…
Flask 记录带文件
即便你收到了邮件,你可能还是想记录警告。当调试问题的时候,收集更多的信息是个好主意。请注意 Flask 核心系统本身不会发出任何警告,所以在古怪的事情发生时发出警告是你的责任。 在…
Flask 其他的库
至此,我们只配置了应用自己建立的日志记录器。其它的库也可以记录它们。例如,SQLAlchemy 在它的核心中大量地使用日志。而在 logging 包中有一个方法可以一次性配置所有的…
Flask 调试应用错误
对于生产应用,按照 记录应用错误 中的描述来配置你应用的日志记录和通知。这个章节讲述了调试部署配置和深入一个功能强大的 Python 调试器的要点。 有疑问时,手动运行 在配置你的…
Flask 配置处理
0.3 新版功能. 应用会需要某种配置。你可能会需要根据应用环境更改不同的设置,比如切换调试模式、设置密钥、或是别的设定环境的东西。 Flask 被设计为需要配置来启动应用。你可以…
Flask 配置基础
config 实际上继承于字典,并且可以像修改字典一样修改它: app = Flask(__name__) app.config['DEBUG'] = True 给…
Flask 从文件配置
如果你能在独立的文件里存储配置,理想情况是存储在当前应用包之外,它将变得更有用。这使得通过各式包处理工具( 部署和分发 )打包和分发你的应用成为可能,并在之后才修改配置文件。 则一…
Flask 配置的最佳实践
之前提到的建议的缺陷是它会使得测试变得有点困难。基本上,这个问题没有单一的 100% 解决方案,但是你可以注意下面的事项来改善体验: 在函数中创建你的应用,并在上面注册蓝图。这样你…
Flask 开发/生产
大多数应用不止需要一份配置。生产服务器和开发期间使用的服务器应该各有一份单独的配置。处理这个的最简单方法是,使用一份默认的总会被载入的配置,和一部分版本控制,以及独立的配置来像上面…
Flask 实例文件夹
0.8 新版功能. Flask 0.8 引入了示例文件夹。 Flask 在很长时间使得直接引用相对应用文件夹的路径成为可能(通过 Flask.root_path )。这也是许多开发…
Flask 订阅信号
你可以使用信号的 connect() 方法来订阅信号。该函数的第一个参数是信号发出时要调用的函数,第二个参数是可选的,用于确定信号的发送端。退订一个信号,可以使用 disconne…
Flask 创建信号
如果你想要在自己的应用中使用信号,你可以直接使用 blinker 库。最常见的用法是在自定义的 Namespace 中命名信号。这也是大多数时候推荐的做法: from blinke…
Flask 发送信号
如果你想要发出信号,调用 send() 方法可以做到。它接受发送端作为第一个参数,和一些推送到信号订阅者的可选关键字参数: class Model(object): … def…
Flask 信号与 Flask 的请求上下文
信号在接收时,完全支持 请求上下文 。上下文本地的变量在request_started 和 request_finished 一贯可用,所以你可以信任 flask.g 和其它需要的…
Flask 核心信号
下列是 Flask 中存在的信号: flask.template_rendered 当模板成功渲染的时候,这个信号会发出。这个信号与模板实例template 和上下文的字典(名为 …
Flask 即插视图
0.7 新版功能. Flask 0.7 引入了即插视图,灵感来自 Django 的基于类而不是函数的通用视图。其主要目的是让你可以对已实现的部分进行替换,并且这个方式可以定制即插视…
Flask 基本原则
想象你有一个从数据库载入一个对象列表并渲染到视图的函数: @app.route('/users/') def show_users(page): users = U…
Flask 方法提示
即插视图可以像常规函数一样用 route() 或更好的add_url_rule() 附加到应用中。然而当你附加它时,你必须提供 HTTP 方法的名称。为了将这个信息加入到类中,你可…
Flask 装饰视图
既然视图类自己不是加入到路由系统的视图函数,那么装饰视图类并没有多大意义。相反的,你可以手动装饰 as_view() 的返回值: def user_required(f): “””…