我真的很喜欢 Python,因为我可以使用它的 shell 来探索事物。
在开发 django 应用程序时是否可以这样做?
我的意思是,是否可以这样做:
def process_request(request):
...
if(request.FILES != none):
__builtins__.debug_request = request
showPythonShell();
...
所以我可以试验这个请求?
感谢:D
这可以使用 python 调试器完成:pdb
甚至更好ipdb,它为您提供制表符补全、语法高亮和其他IPython功能。
if(request.FILES != none):
import ipdb; ipdb.set_trace()
一旦到达该行,您就会被放到一个调试 shell 中,您可以在其中检查请求。检查 pdb 文档以获取所有可用的命令。
这是一篇非常好的博客文章,解释了所有细节:http ://aymanh.com/python-debugging-techniques
安装ipython并替换showPythonShell()为:
from IPython import embed; embed();
这将完全符合您的预期,即ipython从您的 if 语句中启动一个 shell。拥有ipythonshell 的好处是 tab 补全、魔术功能等,正如这里所评论的那样。我已经在 python 中开发了很长一段时间,这主要是我用来调试任何东西的方法,包括 django。