在 Pycharm 中调试 Django 代码片段

在Pycharm中可以给代码打断点,查看变量信息等。
Django 调试代码可以运行起来打日志,但无法中断代码调试。
Django 提供了一个 manage.py shell 命令可以创建 Django 环境,手工执行代码调试。

本文介绍如何把manage shell 和 Pycharm结合起来,在不启动 Django 的情况下调试代码模块。

原理:
python manage.py shell 可以用来创建一个交互式环境;
python manage.py shell -c "print('hello')" 可以直接在交互环境中执行语句;
import 模块时会加载运行其代码;
模块中可以用 if __name__ == "__main__": 判断是调试还是import运行;

因此只需把import语句放入shell -c 参数中,然后用环境变量判断是否在调试就可以了。

编辑配置


接下来可以创建或改造一个默认生成的配置:

关键点是:

  • 脚本写项目的 manage.py
  • 参数为 shell -c "from xxxx import yyy" 引入你要调试的模块
  • 加一个环境变量 MANAGE_SHELL 用来区分是否在manage环境调试

然后编辑模块的 if __name__ 部分:

# file tasks.py
def sync_ali_bills():
    ...
    # 被调试的函数
    ...

import os
if __name__ == "__main__" or os.getenv('MANAGE_SHELL', False):
    sync_ali_bills()

因为有些模块可能和Django环境无关,因此我保留了__name__是否为__main__的判断,这种情况直接调试即可。

这样配置后进行调试,就可以正确加载Django环境,在代码中打断点,进行调试了。

posted @ 2025-03-17 12:50  tinyhare  阅读(35)  评论(0)    收藏  举报