检查模板中是否存在变量,如果不存在则不会在记录器中引起错误
Check if variable exists in template, without causing errors in loggers if it doesn't
我在settings.py
中启用了'level': 'DEBUG'
LOGGING
。
我知道在模板中检查变量是否存在的建议解决方案正在使用 if 模板标签
{% if variable %}
这是在文档中提出的,questions询问如何检查变量是否存在被关闭为偏离主题并指向那个方向。
提供的另一个解决方案 here 是与 None 进行比较。
{$ if variable is not None %}
然而,在这两种情况下,虽然它在用户端工作正常,但记录器将其保存为 KeyError
,使我的日志文件混乱。
我怎样才能避免这种情况?
您可以将名为 django.template
的记录器的日志级别设置为 INFO
或更高,以禁用这些日志消息。
我使用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}
我在settings.py
中启用了'level': 'DEBUG'
LOGGING
。
我知道在模板中检查变量是否存在的建议解决方案正在使用 if 模板标签
{% if variable %}
这是在文档中提出的,questions询问如何检查变量是否存在被关闭为偏离主题并指向那个方向。
提供的另一个解决方案 here 是与 None 进行比较。
{$ if variable is not None %}
然而,在这两种情况下,虽然它在用户端工作正常,但记录器将其保存为 KeyError
,使我的日志文件混乱。
我怎样才能避免这种情况?
您可以将名为 django.template
的记录器的日志级别设置为 INFO
或更高,以禁用这些日志消息。
我使用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}