【发布时间】:2011-01-08 01:32:12
【问题描述】:
当我在 django 模板 {{placeholder}} 中出错时,我没有收到任何错误,只是输出中我期望内容的空白处。发生这种情况时,有没有办法在我的日志中查看某些内容,最好使用logging.warning 或logging.error?
【问题讨论】:
标签: django logging django-templates django-logging
当我在 django 模板 {{placeholder}} 中出错时,我没有收到任何错误,只是输出中我期望内容的空白处。发生这种情况时,有没有办法在我的日志中查看某些内容,最好使用logging.warning 或logging.error?
【问题讨论】:
标签: django logging django-templates django-logging
是的,有。只需添加您的开发settings.py:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django.template': {
'handlers': ['console'],
'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
},
},
}
正如roboslone stated,Django 1.9 确实引入了它。 sn-p 与Configuring logging examples in Django docs 的第二个非常相似。
【讨论】:
Django 为处理TEMPLATE_STRING_IF_INVALID 中的未知上下文变量提供了唯一的功能。如果您想要比这更好,您将不得不对模板引擎进行更深入的修改。
【讨论】:
django.template logger 是在 Django 1.9 中引入的 docs.djangoproject.com/ja/1.9/topics/logging/#django-template
在 Django >= 1.8 中,TEMPLATE_STRING_IF_INVALID 已被弃用,取而代之的是 settings.TEMPLATES 中的 string_if_invalid。
如果你想要做的不仅仅是依赖来自django.template 记录器的DEBUG 消息,你可以欺骗django.template.base.FilterExpression.render() 中的以下代码:
if '%s' in string_if_invalid:
return string_if_invalid % self.var
类如下:
class InvalidString(object):
def __mod__(self, other):
log.error('Missing template variable: "%s"', other)
# ... do other interesting things ...
return u''
def __contains__(self, item):
return item == '%s'
并在settings.TEMPLATES中设置string_if_invalid:
TEMPLATES = [{
'OPTIONS': {'string_if_invalid': InvalidString()}
# ...
}]
【讨论】: