Django: регистрация ошибок шаблона - PullRequest
5 голосов
/ 22 января 2010

Когда я делаю ошибку в шаблоне django {{placeholder}}, я не получаю никакой ошибки, только пустое пространство на выходе, где я ожидал содержимое. Есть ли способ увидеть что-то в моих журналах, когда это происходит, предпочтительно используя logging.warning или logging.error?

Ответы [ 3 ]

5 голосов
/ 09 декабря 2017

Да, есть. Просто добавьте в свою разработку 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'),
        },
    },
}

Как сказал Робослон , Django 1.9 действительно представил его. Фрагмент очень похож на второй из Настройка примеров ведения журнала в Django docs .

2 голосов
/ 22 января 2010

Единственное, что Django предоставляет для обработки неизвестных переменных контекста в TEMPLATE_STRING_IF_INVALID. Вам нужно будет сделать более глубокий взлом движка шаблонов, если вы хотите лучшего.

0 голосов
/ 07 марта 2017

В Django> = 1.8, TEMPLATE_STRING_IF_INVALID устарело в пользу string_if_invalid в settings.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()}
    # ...
}]
...