【问题标题】:PyCharm: debug Django Rest ViewsetsPyCharm:调试 Django Rest Viewsets
【发布时间】:2017-05-28 23:13:55
【问题描述】:

我有以下视图集(Rest Framework docs 中相同):

class UserViewSet(viewsets.ViewSet):

    def list(self, request):
        queryset = User.objects.all()
        serializer = UserSerializer(queryset, many=True)
        return Response(serializer.data)

假设这个视图集被调用:GET127.0.0.1:8000/api/user

我想设置 断点 并观察当我从 Web 界面请求该视图集时代码是如何执行的。但我不明白如何让我的断点工作。

我知道可以调试 django 命令(继承自 BaseCommand 并由 python manage.py <command_name> 调用)。我只是在 Run/Debug configurations 脚本 - manage.py 和脚本参数 - <command_name> 中定义,一切都像一个魅力。

是否可以以某种方式调试我的视图集?当我调用我的视图集时,我希望我的代码在断点处停止。

【问题讨论】:

  • 如果你使用的是pycharm那么你也可以在运行调试器后set breakpoints,对吧?
  • 从调试你的视图as_view开始
  • @AKS 和@dnit13 我没有理解你的两个答案。 @AKS 之后切换断点有什么意义? @dnit13 在哪里使用as_view
  • 设置断点使您可以灵活地选择要停止编码的位置以及何时切换并根据需要设置下一个断点。
  • 关键是调试器没有在我的断点处停止。我在我的视图集上切换了它们,但代码只是执行并且无处停止。

标签: django django-rest-framework pycharm


【解决方案1】:

对于 Pycharm 专业人士:

  1. 运行 - 编辑配置
  2. 点击“+”,选择“Django 服务器”
  3. 输入名称(“Django debug server”),主机(127.0.0.1)和端口(8000),检查是否选择了正确的python解释器,点击确定。
  4. 运行 - 调试 - 选择您创建的调试配置“Django 调试服务器”。
  5. 根据您的情况,在 UserViewSet list() 方法中设置断点。可以肯定的是,到处都是。
  6. 在任何浏览器中打开 127.0.0.1:8000/api/user。
  7. 调试器应该在您的断点处停止。

附:在 №5 中,您可以更深入地为处理对服务器的请求的 django.core.handlers.base 方法 get_response() 设置断点。

【讨论】:

    猜你喜欢
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2014-02-15
    • 2014-05-18
    • 2016-06-07
    • 1970-01-01
    • 2015-02-14
    相关资源
    最近更新 更多