【问题标题】: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 块:

        由于模板语言不提供异常处理,模板过滤器引发的任何异常都将作为服务器错误公开。因此,如果有合理的回退值要返回,过滤器函数应该避免引发异常。如果输入代表模板中的明显错误,则引发异常可能仍然比隐藏错误的静默失败更好。

        【讨论】:

          【解决方案4】:

          Django 不允许您开箱即用。但是,Django 允许您构建自定义模板标签和模板节点。
          您将需要advanced custom template tags documentation

          【讨论】:

            猜你喜欢
            • 2011-04-01
            • 1970-01-01
            • 2011-01-01
            • 2012-05-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多