validate_templates
==================

:synopsis: Checks templates on syntax or compile errors.

This will catch any invalid Django template syntax, for example::

    {% foobar %}

    {% comment %}
    This throws this error:
    TemplateSyntaxError Invalid block tag on line 1: 'foobar'. Did you forget to register or load this tag?
    {% endcomment %}

Note that this will not catch invalid HTML, only errors in the Django template
syntax used.

Options
-------

verbosity
~~~~~~~~~
A higher verbosity level will print out all the files that are processed
instead of only the ones that contain errors.

break
~~~~~
Do not continue scanning other templates after the first failure.

ignore-app
~~~~~~~~~~
Ignore this app (can be used multiple times).

includes
~~~~~~~~
Use -i (can be used multiple times) to add directories to the TEMPLATE DIRS.

no-apps
~~~~~~~
Do not automatically include app template directories.


Settings
--------

VALIDATE_TEMPLATES_IGNORE_APPS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Ignore the following apps


VALIDATE_TEMPLATES_IGNORES
~~~~~~~~~~~~~~~~~~~~~~~~~~

Ignore file names which matches these patterns.
Matching is done via `fnmatch`.


VALIDATE_TEMPLATES_EXTRA_TEMPLATE_DIRS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

You can use `VALIDATE_TEMPLATES_EXTRA_TEMPLATE_DIRS` to include a number of template
dirs by default directly from the settings file. This can be useful for situations
where TEMPLATE DIRS is dynamically generated or switched in middleware, or when you
have other template dirs for external applications like celery, and you want to
check those as well.

Usage Example
-------------

::

    ./manage.py validate_templates


You can also integrate it with your tests, like this::

    import unittest
    from django.core.management import call_command

    class MyTests(unittest.TestCase):
        def test_validate_templates(self):
            call_command("validate_templates")
            # This throws an error if it fails to validate
