开发者

Detecting unset variables in Django templates

As a long time PHP dev开发者_StackOverfloweloper, I'm used to the idea of setting the error level for my application to warn me when I am using an uninitialized variable. I was wondering if a similar feature exists in Django, where I can detect at run-time that I am using a variable in my template that was not explicitly passed to the template via the view?

For example, I misspelled a variable name in the template

{{ mysearch }}

When it should've been

{{ my_search }}

Common mistake, not paying attention while typing, etc. In PHP I would've seen a warning about using an uninitiailzed variable but Django doesn't seem to care and just keeps on going like nothing happened. From a debugging perspective, it would be awesome to detect when I've made a mistake like that.

Any thoughts?


Are you looking for this? http://docs.djangoproject.com/en/1.1/ref/templates/api/#invalid-template-variables

Have you tried setting TEMPLATE_STRING_IF_INVALID? e.g.,

TEMPLATE_STRING_IF_INVALID = 'DEBUG WARNING: template variable [%s] is not defined'

That will cause that string to be printed in the rendered html for each spot where an undefined variable was referenced, along with the variable name.

Read this: http://docs.djangoproject.com/en/1.1/ref/settings/#setting-TEMPLATE_STRING_IF_INVALID


In newer versions of Django you can get messages about unset template variables by outputting messages from the 'django.template' logger by modifying the LOGGING setting.

LOGGING = {
    # ... [SNIP]
    'loggers': {
        # ... [SNIP]
        'django.template': {
            'handlers': ['console'],
            'propagate': False,
            'level': 'DEBUG',
        }
    },
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜