如何调试Flask中的URL路由?

11 投票
4 回答
7920 浏览
提问于 2025-04-17 22:24

我正在用Visual Studio 2013的PythonTools开发一个Flask网站,这个工具自带调试器,可以让我逐步查看初始设置的代码,直到app.run()这行。

不过,我想调试的代码是路由代码,像这样:

@app.route('/')
def url_index():
     return render_template('index.html') 

我知道这个函数在运行,因为服务器会返回index.html,但如果我在最后一行设置一个断点,它永远不会被触发。

有没有办法调试这些路由函数呢?Flask说它自带调试器,但我该怎么用呢?这个调试器能和Visual Studio兼容吗?

4 个回答

1

你可以通过以下方式关闭调试模式下的自动重载:

app.run(debug=True, use_reloader=False)

关于调试选项的详细信息,可以查看Flask的错误处理文档

2

很遗憾,目前版本的PTVS不支持Flask项目。

不过好消息是:已经发布的PTVS 2.1 alpha版本是支持的:http://pytools.codeplex.com/wikipage?title=Flask

4

六个月过去了,虽然现在还不能自动调试Flask中的URL路由,但你可以手动把调试工具连接到Flask进程。不过,如果你重启服务器,或者自动重载检测到你的.py文件有变化并重启的话,你需要重新连接调试工具。

你只需要这样操作:
工具 -> 附加到进程
然后选择那个没有变灰的Python.exe(这就是Visual Studio已经在调试的Flask初始代码)。接着做一些会触发断点的操作(比如刷新页面),这样就应该能成功了。

4

对于Flask的调试工具,你可以把 app.debug 设置为 True

app.debug = True

或者

app.run(debug=True)

然后:

@app.route('/')
def index():
   raise
   return render_template('index.html') 

这样你就可以在浏览器中使用Flask的调试工具来调试这个函数了。

撰写回答