Python 2.7 Python-在Jinja2渲染时记录stacktrace

Python 2.7 Python-在Jinja2渲染时记录stacktrace,python-2.7,stack-trace,jinja2,Python 2.7,Stack Trace,Jinja2,以下代码 import jinja2 class SomeObj(object): def call(self): x = dict() x['raise'] template = jinja2.Template('{{ obj.call() }}') template.render(obj=SomeObj()) 将导致Jinja2崩溃并将以下信息打印到控制台 Traceback (most recent call last): File "te

以下代码

import jinja2

class SomeObj(object):
    def call(self):
        x = dict()
        x['raise']

template = jinja2.Template('{{ obj.call() }}')
template.render(obj=SomeObj())
将导致Jinja2崩溃并将以下信息打印到控制台

Traceback (most recent call last): File "test.py", line 9, in template.render(obj=SomeObj()) File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 969, in render return self.environment.handle_exception(exc_info, True) File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 742, in handle_exception reraise(exc_type, exc_value, tb) File "", line 1, in top-level template code File "test.py", line 6, in call x['raise'] KeyError: 'raise' 我只有

Traceback (most recent call last): File "test.py", line 7, in call x['raise'] KeyError: 'raise' 回溯(最近一次呼叫最后一次): 调用中第7行的文件“test.py” x['raise'] KeyError:'raise'
在Jinja2渲染上下文中,获取完整堆栈跟踪的正确方法是什么?提前谢谢。

我不确定我是否理解你的问题。你想得到第一个回溯文本还是什么?在第二次回溯中,没有堆栈可展开,因为您正好在异常发生的地方捕获了它。@Blckknght是的,一句话,我想在
调用
函数中得到前一次回溯。嗯,也许调用
回溯。print\u stack()
而不是(或除了)而不是
print\u exec()
?堆栈将是仍在运行的函数(直到应用程序的顶层,除非您指定了限制),而异常的回溯将显示已展开的内容。@Blckknght就是这样!非常感谢。 Traceback (most recent call last): File "test.py", line 7, in call x['raise'] KeyError: 'raise'