我正在尝试让Django打印出错误的回溯而不是它选择的错误:
class Comand(BaseCommand):
...
def handle(self, *args, **options):
try:
...
except:
e, c, b = sys.exc_info()
traceback.print_tb(b) # <-- this prints what I want
raise CommandError, 'message', b # <-- this results in wront traceback
换句话说,我希望在manage.py
被调用时这样:
./manage.py command --traceback
打印的回溯将是实际错误中的一个,而不是Django。
我无法找到Django打印它打印的实际消息的位置。
好的,找到了相关的Django代码:
def run_from_argv(self, argv):
...
try:
self.execute(*args, **cmd_options)
except Exception as e:
if options.traceback or not isinstance(e, CommandError):
raise
为什么这不会保留我的回溯?