python – 如何在调用render()时获取Django模板的文件名和行号错误?

python – 如何在调用render()时获取Django模板的文件名和行号错误?,第1张

概述我在独立工具(不在Web应用程序中)中使用Django模板系统,如下所示: from django import templatetry: tmpl = loader.get_template(my_template_path) context = template.Context(my_template_context) txt = tmpl.render(conte 我在独立工具(不在Web应用程序中)中使用Django模板系统,如下所示:

from django import templatetry:    tmpl = loader.get_template(my_template_path)    context = template.Context(my_template_context)    txt = tmpl.render(context)except (template.TemplateSyntaxError,template.TemplateDoesNotExist),e:    # ...

当模板包含错误时,将引发异常.如何获取错误的文件名,行号和行位置?在这种情况下,我是否应该从异常中获取此信息(不为浏览器呈现响应)?

我注意到TemplateSyntaxError有一个source属性,其值是一个包含LoaderOrigin和一对数字的元组. LoaderOrigin的名称等于文件名.这些数字看起来并不像错误的字符位置,但也许还有另一种解释方法吗?

TemplateDoesNotExist似乎没有源,只有args和message,它们提供了无法找到的模板的名称.有没有办法找到模板标签进行加载,或者在线号不再可用的后期阶段是否会发生此错误?

我确实有django.settings,如果重要的话,TEMPLATE_DEBUG设置为True. (我相信这需要在将模板渲染到网页时报告行号,并显示奇特的错误.)我还使用了一个简单的模板加载器,通过TEMPLATE_LOADERS设置,但我认为这不重要.此外,我目前仍然坚持使用Django 1.3,因此首选兼容1.3的解决方案.

谢谢!

解决方法 我相信TemplateSyntaxError的source属性是您正在寻找的. Django代码暗示所提到的数字是发生错误的行号,见 https://github.com/django/django/blob/1.3.7/django/views/debug.py#L153.

至于TemplateDoesNotExist,它似乎被忽略,当它作为模板标签的结果出现时,见https://github.com/django/django/blob/1.3.7/django/template/loader.py#L50.

总结

以上是内存溢出为你收集整理的python – 如何在调用render()时获取Django模板的文件名和行号错误?全部内容,希望文章能够帮你解决python – 如何在调用render()时获取Django模板的文件名和行号错误?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存