5

当我在 django 模板中出错时{{placeholder}},我没有收到任何错误,只是输出中我期望内容的空白处。发生这种情况时,有没有办法在我的日志中查看某些内容,最好使用logging.warningor logging.error

4

3 回答 3

7

就在这里。只需添加您的开发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 所说,Django 1.9 确实引入了它。该片段与在 Django 文档中配置日志记录示例的第二个非常相似。

于 2017-12-08T22:09:21.227 回答
2

Django 唯一提供的用于处理TEMPLATE_STRING_IF_INVALID. 如果您想要比这更好,您将不得不对模板引擎进行更深入的黑客攻击。

于 2010-01-22T04:48:42.257 回答
0

在 Django >= 1.8 中,TEMPLATE_STRING_IF_INVALID已弃用,取而代之的string_if_invalidsettings.TEMPLATES.

如果您想做的不仅仅是依赖DEBUG来自django.template记录器的消息,您可以欺骗以下代码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'

string_if_invalid并设置settings.TEMPLATES

TEMPLATES = [{
    'OPTIONS': {'string_if_invalid': InvalidString()}
    # ...
}]
于 2017-03-06T22:59:56.070 回答