检查模板中是不是存在变量,如果不存在则不会在记录器中导致错误
Posted
技术标签:
【中文标题】检查模板中是不是存在变量,如果不存在则不会在记录器中导致错误【英文标题】:Check if variable exists in template, without causing errors in loggers if it doesn't检查模板中是否存在变量,如果不存在则不会在记录器中导致错误 【发布时间】:2020-02-12 04:31:31 【问题描述】:我在LOGGING
和settings.py
中启用了'level': 'DEBUG'
。
我知道在模板中检查变量是否存在的建议解决方案是使用 if 模板标签
% if variable %
这是在文档中提出的,questions 询问如何检查变量是否存在已作为题外话关闭并指向该方向。
here 提供的另一个解决方案是与 None 进行比较。
$ if variable is not None %
然而,在这两种情况下,虽然它在用户端运行良好,但记录器将其保存为 KeyError
,使我的日志文件变得混乱。
我怎样才能避免这种情况?
【问题讨论】:
【参考方案1】:我使用 django 过滤器正确解决了这个问题:
在myapp/templatetags/filters.py
我加:
@register.simple_tag(takes_context=True)
def var_exists(context, name):
dicts = context.dicts # array of dicts
if dicts:
for d in dicts:
if name in d:
return True
return False
在html模板中:
% load filters %
...
% var_exists 'project' as project_exists %
% if project_exists %
...
% endif
【讨论】:
【参考方案2】:您可以将名为 django.template
的记录器的日志级别设置为 INFO
或更高级别以禁用这些日志消息。
【讨论】:
在这种情况下,您将跳过模板中所有真正有意义的错误以上是关于检查模板中是不是存在变量,如果不存在则不会在记录器中导致错误的主要内容,如果未能解决你的问题,请参考以下文章
检查表1中是不是存在记录的优化方法。如果没有则检查表2,否则返回默认值