Pydev控制台:检查变量值似乎导致代码意外执行

2024-03-28 11:59:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Eclipse/Pydev逐步完成django中表单验证的整个过程。我得到了一个完全出乎意料的结果。在

parent_form = form_class(request.POST, initial=initial)
debug_type = type(parent_form._errors)
msg = _('created successfully')  # <------- Set breakpoint here

这是我在控制台里闲逛得到的。在

^{pr2}$

我不明白为什么这两个值不同;第一个值是应该“正确”的值。在

在django源代码中,存在一个称为parent的东西_表格错误(请注意,错误前缺少前导下划线)这是父\u form的属性;获取该属性将运行一段代码,该代码将导致\u errors从None变为ErrorDict。但我不是要当家长_表格错误,我要的是家长表格。错误。在

可能是PyDev计算父级的吗_表格错误没有要求?如果是,为什么?为什么我不能通过在父对象的getter中设置断点来捕获这种静默计算呢_表单错误?在


Tags: django代码form表单属性过程type错误
1条回答
网友
1楼 · 发布于 2024-03-28 11:59:15

当您到达一个断点,并且PyDev填充了variables视图(在这里可以看到每个变量的值),它将对作用域中的所有变量执行dir(),并对找到的每个变量执行getattr()(这对调试器的操作有点简化,但它很接近它)。。。在

所以,它不能真的猜测某个变量是否会有一些副作用。。。您可以尝试关闭variables视图来检查它是否只在变量被实际请求时才会这样做(尽管它可能会请求一些东西,即使它关闭了,也不确定)。在

相关问题 更多 >