有人能解释一下吗?(Python 2.7,Django 1.7)
foo = data['selected_items']
(Pdb) foo
(Pdb) *** NameError: name 'foo' is not defined
foo
(Pdb) u'1,2'
foo
(Pdb) *** NameError: name 'foo' is not defined
foo
(Pdb) u'1,2'
foo
(Pdb) *** NameError: name 'foo' is not defined
foo
(Pdb) u'1,2'
下面是触发它的视图函数:
def process_form(request, model_name):
form = BulkEditForm(request.POST)
if form.is_valid():
data = form.clean()
if data['select_all']:
pass
else:
import pdb; pdb.set_trace()
你知道吗请求.POST地址:
{'select_all': False, 'primary_tech': <Person: Bob>, 'primary_biz': <Person: Mary>, 'selected_items': u'1,2', 'backup_tech': None, 'backup_biz': None}
当语句出现在PDB中时,它实际上还没有被执行。一旦您使用“下一步”,它将被执行。你知道吗
有两个线程在同一断点处停止。你知道吗
因此,基本上,有两个pdb实例在竞争您的提示,即您的提示在不同的线程之间交替出现。首先在一个中指定名称
foo
,而另一个则有机会运行,对foo
一无所知,然后按enter键时,另一个返回,并定义了foo
。你知道吗这种情况下最好的指示器是提示与命令及其输出不一致。而不是:
你看:
每次按enter键时,“other”线程都会在“first”线程写入其输出之前潜入其提示。你知道吗
编辑
一种简单的无需django的独立复制方法:
相关问题 更多 >
编程相关推荐