You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Bottle 0.12 中如何检测当前是否运行在debug开发模式下

问题原因

Bottle 0.12的模块级全局DEBUG变量和app.run(debug=True)传入的参数是两套独立的配置:

  • 模块级DEBUG是默认值为False的全局变量,仅在手动显式赋值时才会变化
  • app.run(debug=True)传入的参数只会修改当前应用实例的debug属性,不会同步修改模块级的全局DEBUG变量,所以你读取全局DEBUG永远得到False
解决方案

直接读取应用实例的debug属性即可实现需求,有两种常用写法:

方案1:直接引用自定义的app实例(最推荐)

如果你是自己初始化的Bottle实例,直接读取实例的debug属性判断即可,示例代码:

from bottle import Bottle, abort, template

app = Bottle()

@app.route('/debug')
def debug():
    if not app.debug:
        abort(404)
    return template('debug.html')

if __name__ == '__main__':
    # 此处传入的debug=True会自动修改app.debug属性
    app.run(debug=True)

方案2:读取默认应用实例的debug属性

如果你用的是Bottle的默认应用实例,没有自定义实例变量,可以通过default_app获取:

from bottle import route, abort, template, default_app

@route('/debug')
def debug():
    if not default_app().debug:
        abort(404)
    return template('debug.html')
补充说明

生产环境部署时默认不会开启debug配置,该判断逻辑可以保证debug路由仅在开发模式下可访问,符合安全要求。

内容的提问来源于stack exchange,提问作者neurino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:06:07