[Django]-Integrating third-party django apps and templates


You should not modify the code of 3rd-party modules, as it’s hard to track the changes and it creates a mess with the same code copied into many projects. Typical solution is to have only one version of each third-party module in your python path, not in your project’s dir. This single package can then be reused by all of your projects.

However different approach is needed for templates, as they often need to be modified on a per-project basis. That’s why Django comes with settings.TEMPLATE_DIRS and settings.TEMPLATE_LOADERS.

TEMPLATE_DIRS specifies list of directories containing template files. TEMPLATE_LOADERS specifies the classes used to load templates. The loaders will be used in order they were defined and the directories will be traversed in order they were defined. So you can look for templates in your project’s directory first and in other modules as a fallback.

So basically you do not need to copy the entire python module in order to change one template. Copy just the templates directory of that 3rd party module or even just the single template you want to change. If you’ll put in the right place and add have the path in TEMPLATE_DIR Django will use it.

Leave a comment