使用 PyCharm 进行调试

在开始之前,请确保将 Django 指定为项目模板语言。有关详细信息,请参阅添加 Django 模板部分。

准备一个例子

  1. MyDjangoProject1使用应用程序创建一个 Django 项目poll

    创建一个 Django 应用程序
  2. 打开文件poll/views.py进行编辑F4,看到import语句已经存在。在第二行中,您会看到手动执行某项操作的邀请:

    from django.shortcuts import render # 在此处创建视图。

    键入以下代码:

    from django.shortcuts import render def index(request): return render(request, 'index.html', context={'hello': 'world'})
  3. index.html引用被标记为未解析的引用:

    找不到模板

    Alt+Enter或单击意向灯泡并选择创建缺少的模板:

    创建模板

    确认文件名并完成任务:

    创建 index.html 文件
  4. 在文件templates/index.html中键入以下代码:

    {% for char in hello %} {{ char }} {% endfor %}

    这意味着world变量的值hello将一个接一个地打印出来。

  5. 打开MyDjangoProject1/urls.py文件F4

    在此文件Ctrl+F中找到字符串path并在管理站点的 url 之后键入以下代码:

    路径('索引/',索引),

    不要忘记导入声明!

    从 poll.views 导入索引

    您应该得到以下结果:

    网址格式

    这样示例代码就准备好了。

设置断点

  • 向模板文件添加断点。为此,打开以编辑文件templates/index.htmlF4并单击装订线:

    断点

请注意,Django 服务器运行/调试配置是自动创建的,唯一需要做的就是对其进行编辑。

编辑并启动运行/调试配置

  1. 在主工具栏的运行/调试配置列表中选择Edit Configurations...命令:

    编辑配置
  2. 将端口号更改为8123

    Django 服务器的运行/调试配置
  3. 在调试模式下启动此运行/调试配置:从下拉列表中选择此配置并单击启动调试器

    下拉菜单中运行/调试配置的名称、启动调试器按钮和调试工具窗口都标有一个点,表示运行/调试配置变为活动状态。

    调试 Django 模板:404 错误
  4. 运行/调试配置显示错误消息 (404),因为既不存在管理站点,也不存在索引页面。但是,我们需要在断点处暂停我们的应用程序。为此,我们需要将名称添加index到地址栏的内容中。

    为地址栏的内容添加索引

    该页面仍未找到,但在 PyCharm 中,您会看到带有命中断点和调试工具窗口的模板。

    断点命中

在 Django 应用程序中,调试工具窗口的所有功能都可用,与纯 Python 脚本相同。例如,您可以单步执行您的应用程序、评估表达式、监视变量等等。

  • 单步执行程序单步工具栏变为活动状态,并且单步按钮可用。例如,单击跨过去并看到char变量的值变为单词的下一个字母world

    有关详细信息,请参阅逐步执行程序部分。

  • 计算表达式Alt+F8,或在步进工具栏上单击评估表达式。在打开的对话框中,键入您要计算的表达式,然后单击Evaluate

    评估表达式

    有关详细信息,请参阅评估表达式部分。

  • 观察变量假设,您希望始终关注模板的某个变量,例如char. 怎么做?

    变量选项卡中,确保手表按下按钮(如果按下此按钮,则手表在变量选项卡中可见),然后单击新的调试器手表按钮。输入感兴趣的变量的名称,现在您的手表始终位于“变量”选项卡的顶部。

    当您取消选择该手表按钮时,被监视的变量会显示在专用的Watches选项卡中。

    在调试工具窗口中观看

    有关详细信息,请参阅手表

就是这样......这里做了什么?让我们重复一遍:

  • 您已经创建了一个 Django 项目,其中包含一个模板。

  • 您已向此模板添加断点。

  • 您已经创建了 Django 服务器运行/调试配置,并在调试模式下启动了它。

  • 到达断点后,您已经学会了如何单步执行模板、评估表达式和添加监视。

下一步也适用于专业版用户 - 这是调试 JavaScript

最后修改时间:2021 年 8 月 26 日