您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 在Django中捕获TemplateDoesNotExist

5b51 2022/1/14 8:20:30 python 字数 1999 阅读 452 来源 www.jb51.cc/python

我试图在使用Django 1.4.3(使用 Python 2.7.2)的项目中使用SO答案: https://stackoverflow.com/a/6217194/493211中描述的模板标签. 我这样改编: from django import template register = template.Library() @register.filter def template_exi

概述

我这样改编:

from django import template


register = template.Library()

@register.filter
def template_exists(template_name):
    try:
        template.loader.get_template(template_name)
        return True
    except template.TemplateDoesNotExist:
        return False

所以我可以在另一个模板中使用它:

{% if 'profile/header.html'|template_exists %}        
  {% include 'profile/header.html' %}
{% else %}
  {% include 'common/header.html' %}
{% endif %}

通过这种方式,我可以避免使用诸如在INSTALLED_APPS中更改我的应用程序的顺序等解决方案.

但是,它不起作用.如果模板不存在,那么异常会在堆栈/控制台中引发,但它不会传播到get_template(..)(从statement开始),因此不会传播给我愚蠢的API.因此,在渲染过程中,这会在我的脸上爆炸.我将stacktrace上传pastebin

这是Django的通缉行为吗?

我最终停止做愚蠢的事情.但我的问题仍然存在.

@register.simple_tag(takes_context=True)
def include_fallback(context,*template_choices):
    t = django.template.loader.select_template(template_choices)
    return t.render(context)

然后在你的模板中:

{% include_fallback "profile/header.html" "common/header.html" %}

总结

以上是编程之家为你收集整理的python – 在Django中捕获TemplateDoesNotExist全部内容,希望文章能够帮你解决python – 在Django中捕获TemplateDoesNotExist所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶