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'