Jinja2 is a templating language for Python. While it got its start on the web for use with the Flask framework, it is popular in many other places. Both Flask and Pelican use it to template HTML pages, allowing seperation between style and content. Configuration management frameworks, like Ansible and SaltStack, use it to parametrize their configurations (Ansible playbooks or Salt state files, respectively). This allows the configuration files to take into consideration local machine parameters, for example. The Cookiecutter framework uses it to define its input templates, so that files that need the name of the project or the name of the maintainer can be parametrized.
Jinja2 is used in many Python projects because it is both web-framework-agnostic and language-agnostic. This means that, for many Python projects in need of a template language, Jinja2's easy API and accessible template-designer documentation is an easy choice. Additionally, its popularity is its own advantage: for a project that needs a tempate language, using Jinja2 means being able to point to the wealth of documentation on writing templates. This makes Jinja2 a great choice for home-grown, internal project.
Our new Jinja2 cheat sheet will help you in your day-to-day work with Jinja2 templates. It includes examples of loops, conditional renders, filters, and other useful bits.