[patch] Template loader caching can cause circular imports
|Reported by:||django@…||Owned by:||adrian|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
The template.loader module caches the enabled template loaders in a module global at the time of import. The resulting dynamic imports can lead to problems with circular imports. For example, a circular import will occur if the app_directories template loader is used together with an application that tries to do anything in its __init__.py that triggers another import of template.loader.
The attached patch resolves this problem by caching only on the first call to find_template_source.