如何使用Python';什么是pdb?
我正在使用如何使用Python';什么是pdb?,python,django,pdb,django-contenttypes,Python,Django,Pdb,Django Contenttypes,我正在使用pdb(实际上是ipdb)调试我的Django模型.py。我特别尝试调试以下代码行: def add_can_view( sender, **kwargs ) : #import ipdb; ipdb.set_trace() for content_type in ContentType.objects.all(): Permission.objects.create( content_type = content_type,
pdb
(实际上是ipdb
)调试我的Django模型.py
。我特别尝试调试以下代码行:
def add_can_view( sender, **kwargs ) :
#import ipdb; ipdb.set_trace()
for content_type in ContentType.objects.all():
Permission.objects.create(
content_type = content_type,
codename = 'view_{}'.format( content_type.model ),
name = 'Can view {}'.format( content_type.name )
)
post_syncdb.connect( add_can_view )
在中提供的上述代码在运行python manage.py syncdb
时出现IntegrityError
错误:
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (11, 0))
---------------------------------------------------------------------------
IntegrityError Traceback (most recent call last)
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/IPython/utils/py3compat.pyc in execfile(fname, *where)
173 else:
174 filename = fname
--> 175 __builtin__.execfile(filename, *where)
/Users/hobbes3/Sites/mysite/manage.py in <module>()
8 from django.core.management import execute_from_command_line
9
---> 10 execute_from_command_line(sys.argv)
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/__init__.pyc in execute_from_command_line(argv)
441 """
442 utility = ManagementUtility(argv)
--> 443 utility.execute()
444
445 def execute_manager(settings_mod, argv=None):
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/__init__.pyc in execute(self)
380 sys.stdout.write(self.main_help_text() + '\n')
381 else:
--> 382 self.fetch_command(subcommand).run_from_argv(self.argv)
383
384 def setup_environ(settings_mod, original_settings_path=None):
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/base.pyc in run_from_argv(self, argv)
194 options, args = parser.parse_args(argv[2:])
195 handle_default_options(options)
--> 196 self.execute(*args, **options.__dict__)
197
198 def execute(self, *args, **options):
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/base.pyc in execute(self, *args, **options)
230 if self.requires_model_validation:
231 self.validate()
--> 232 output = self.handle(*args, **options)
233 if output:
234 if self.output_transaction:
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/base.pyc in handle(self, *args, **options)
369 if args:
370 raise CommandError("Command doesn't accept any arguments")
--> 371 return self.handle_noargs(**options)
372
373 def handle_noargs(self, **options):
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/South-0.7.4-py2.7.egg/south/management/commands/syncdb.pyc in handle_noargs(self, migrate_all, **options)
88
89 # OK, run the actual syncdb
---> 90 syncdb.Command().execute(**options)
91
92 settings.INSTALLED_APPS = old_installed
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/base.pyc in execute(self, *args, **options)
230 if self.requires_model_validation:
231 self.validate()
--> 232 output = self.handle(*args, **options)
233 if output:
234 if self.output_transaction:
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/base.pyc in handle(self, *args, **options)
369 if args:
370 raise CommandError("Command doesn't accept any arguments")
--> 371 return self.handle_noargs(**options)
372
373 def handle_noargs(self, **options):
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/commands/syncdb.pyc in handle_noargs(self, **options)
108 # Send the post_syncdb signal, so individual apps can do whatever they need
109 # to do at this point.
--> 110 emit_post_sync_signal(created_models, verbosity, interactive, db)
111
112 # The connection may have been closed by a syncdb handler.
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/sql.pyc in emit_post_sync_signal(created_models, verbosity, interactive, db)
187 models.signals.post_syncdb.send(sender=app, app=app,
188 created_models=created_models, verbosity=verbosity,
--> 189 interactive=interactive, db=db)
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/dispatch/dispatcher.pyc in send(self, sender, **named)
170
171 for receiver in self._live_receivers(_make_id(sender)):
--> 172 response = receiver(signal=self, sender=sender, **named)
173 responses.append((receiver, response))
174 return responses
/Users/hobbes3/Sites/mysite/doors/signals.py in add_can_view(sender, **kwargs)
8 content_type = content_type,
9 codename = 'view_{}'.format( content_type.model ),
---> 10 name = 'Can view {}'.format( content_type.name )
11 )
12
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/db/models/manager.pyc in create(self, **kwargs)
135
136 def create(self, **kwargs):
--> 137 return self.get_query_set().create(**kwargs)
138
139 def bulk_create(self, *args, **kwargs):
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/db/models/query.pyc in create(self, **kwargs)
375 obj = self.model(**kwargs)
376 self._for_write = True
--> 377 obj.save(force_insert=True, using=self.db)
378 return obj
379
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/db/models/base.pyc in save(self, force_insert, force_update, using)
461 if force_insert and force_update:
462 raise ValueError("Cannot force both insert and updating in model saving.")
--> 463 self.save_base(using=using, force_insert=force_insert, force_update=force_update)
464
465 save.alters_data = True
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/db/models/base.pyc in save_base(self, raw, cls, origin, force_insert, force_update, using)
549
550 update_pk = bool(meta.has_auto_field and not pk_set)
--> 551 result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
552
553 if update_pk:
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/db/models/manager.pyc in _insert(self, objs, fields, **kwargs)
201
202 def _insert(self, objs, fields, **kwargs):
--> 203 return insert_query(self.model, objs, fields, **kwargs)
204
205 def _update(self, values, **kwargs):
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/db/models/query.pyc in insert_query(model, objs, fields, return_id, raw, using)
1574 query = sql.InsertQuery(model)
1575 query.insert_values(fields, objs, raw=raw)
-> 1576 return query.get_compiler(using=using).execute_sql(return_id)
1577
1578
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/db/models/sql/compiler.pyc in execute_sql(self, return_id)
908 cursor = self.connection.cursor()
909 for sql, params in self.as_sql():
--> 910 cursor.execute(sql, params)
911 if not (return_id and cursor):
912 return
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/db/backends/util.pyc in execute(self, sql, params)
38 start = time()
39 try:
---> 40 return self.cursor.execute(sql, params)
41 finally:
42 stop = time()
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.pyc in execute(self, query, args)
50 def execute(self, query, args=None):
51 try:
---> 52 return self.cursor.execute(query, args)
53 except Database.IntegrityError, e:
54 raise utils.IntegrityError, utils.IntegrityError(*tuple(e)), sys.exc_info()[2]
IntegrityError: duplicate key value violates unique constraint "auth_permission_content_type_id_codename_key"
DETAIL: Key (content_type_id, codename)=(2, view_group) already exists.
错误:标记输入时发生意外错误
以下回溯可能已损坏或无效
错误消息是:('EOF in multi-line statement',(11,0))
---------------------------------------------------------------------------
IntegrityError回溯(最后一次调用)
/execfile(fname,*其中)中的Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/IPython/utils/py3compat.pyc
173.其他:
174 filename=fname
-->175 _uu内置_uuu.execfile(文件名,*其中)
/()中的Users/hobbes3/Sites/mysite/manage.py
8从django.core.management导入从命令行执行
9
--->10从命令行(sys.argv)执行命令
/用户/hobbes3/.virtualenvs/doors/lib/python2.7/site packages/django/core/management/\uuuuuu init\uuuuu.pyc从命令行(argv)执行
441 """
442实用程序=管理实用程序(argv)
-->443实用程序
444
445 def执行管理器(设置模块,argv=None):
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site packages/django/core/management/_init__.pyc in execute(self)
380 sys.stdout.write(self.main\u help\u text()+'\n')
381其他:
-->382 self.fetch_命令(子命令)。从_argv(self.argv)运行_
383
384 def设置环境(设置模式、原始设置路径=无):
/Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/base.pyc从_argv运行(self,argv)
194选项,args=parser.parse_args(argv[2:])
195句柄\默认\选项(选项)
-->196自我执行(*args,**选项._dict__)
197
198 def execute(自我,*参数,**选项):
/执行中的Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/base.pyc(self,*args,**选项)
230如果self.Required_model_验证:
231自我验证()
-->232输出=自身句柄(*args,**选项)
233如果输出:
234如果self.output\u事务:
/句柄中的Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/base.pyc(self,*args,**选项)
369如果参数为:
370 raise CommandError(“命令不接受任何参数”)
-->371返回自身句柄_noargs(**选项)
372
373 def手柄(自身,**选项):
/handle_noargs中的Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/South-0.7.4-py2.7.egg/South/management/commands/syncdb.pyc(self、migrate_all、**选项)
88
89#好的,运行实际的syncdb
--->90 syncdb.Command().execute(**选项)
91
92设置。已安装的应用程序=已安装的旧应用程序
/执行中的Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/base.pyc(self,*args,**选项)
230如果self.Required_model_验证:
231自我验证()
-->232输出=自身句柄(*args,**选项)
233如果输出:
234如果self.output\u事务:
/句柄中的Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/base.pyc(self,*args,**选项)
369如果参数为:
370 raise CommandError(“命令不接受任何参数”)
-->371返回自身句柄_noargs(**选项)
372
373 def手柄(自身,**选项):
/handle_noargs中的Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/commands/syncdb.pyc(self,**选项)
108#发送post#u syncdb信号,这样各个应用程序就可以做他们需要的任何事情
109#在这一点上做。
-->110发出后同步信号(创建的模型、详细、交互式、db)
111
112#连接可能已被syncdb处理程序关闭。
/用户/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/core/management/sql.pyc发出后同步信号(创建模型、冗余、交互、db)
187型号。信号。后同步数据库。发送(发送方=应用,应用=应用,
188创建的模型=创建的模型,详细程度=详细程度,
-->189交互式=交互式,db=db)
/发送中的Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/dispatch/dispatcher.pyc(self,sender,**命名)
170
171对于自身中的接收者。_live_接收者(_make_id(发送者)):
-->172响应=接收器(信号=自身,发送者=发送者,**命名)
173响应。追加((接收方,响应))
174答复
/用户/hobbes3/Sites/mysite/doors/signals.py在add_can_视图中(发送方,**kwargs)
8内容类型=内容类型,
9代码名='view_{}'。格式(content_type.model),
--->10 name='可以查看{}'。格式(content_type.name)
11 )
12
/create(self,**kwargs)中的Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/db/models/manager.pyc
135
136 def创建(自我,**kwargs):
-->137返回self.get\u query\u set().create(**kwargs)
138
139 def批量创建(自身、*args、**kwargs):
/create(self,**kwargs)中的Users/hobbes3/.virtualenvs/doors/lib/python2.7/site-packages/django/db/models/query.pyc
375 obj=自身模型(**kwargs)
376 self.\u for\u write=True
-->377对象保存(force_insert=True,using=self.db)
378返回obj
379
/Users/hobbes3/.virtualenvs/doors/lib/python2
ipdb> foo=""
ipdb> foo. #press tab after writing the dot
foo.capitalize foo.islower foo.rpartition
foo.center foo.isspace foo.rsplit
foo.count foo.istitle foo.rstrip
foo.decode foo.isupper foo.split
foo.encode foo.join foo.splitlines
foo.endswith foo.ljust foo.startswith
foo.expandtabs foo.lower foo.strip
foo.find foo.lstrip foo.swapcase
foo.format foo.partition foo.title
foo.index foo.replace foo.translate
foo.isalnum foo.rfind foo.upper
foo.isalpha foo.rindex foo.zfill
foo.isdigit foo.rjusthere