【问题标题】:How to perform exception handling (try-catch) inside Django template tag?如何在 Django 模板标签中执行异常处理(try-catch)?
【发布时间】:2020-03-27 23:23:45
【问题描述】:
对于 django 要求,我需要使用 django 模板标签在 django 模板内添加异常处理。
try:
mem = e.memberOf
except LDAPCursorError:
mem = ""
这是要求。我需要使用 Django 模板标签来做到这一点。
【问题讨论】:
标签:
django
django-models
django-forms
django-templates
django-views
【解决方案1】:
不幸的是,没有办法做到这一点。 Django 模板不一定是传统编码的环境。它更多地用于将某些代码元素与您的 HTML 显示集成。调试、try-catch 等任何错误都应该推送到模型或视图中。
【解决方案2】:
在你看来
from django.template.defaulttags import register
@register.filter
def sometag(e):
try:
mem = e.memberOf
except LDAPCursorError:
mem = ""
return mem
在你的模板中
{{someting|sometag}}
【解决方案3】:
这是您要查找的 documentation 块:
由于模板语言不提供异常处理,模板过滤器引发的任何异常都将作为服务器错误公开。因此,如果有合理的回退值要返回,过滤器函数应该避免引发异常。如果输入代表模板中的明显错误,则引发异常可能仍然比隐藏错误的静默失败更好。