2 个第三方应用的模板标签文件同名。如何加载它们?

2 third party apps with the same name for their template tag files. How to load them?

app1
 - templatetags
   - __init__.py
   - tags.py

app2
 - templatetags
   - __init__.py
   - tags.py

如果您在模板中执行 {% load tags %},则会使用其中一个(第一个在 settings.py 安装的应用程序中定义的)。如何加载特定于应用程序的模板标签?

有什么方法可以在不影响实际文件名的情况下更改一个应用程序的标签名称? (它们是第 3 方 Django 应用程序)

this类似的问题,但在那种情况下模块名称不一样,所以情况不同。

还有this个问题问了同样的问题,但是没有答案。

我尝试使用 from 指令但没有成功 {% load tags from app2 %} TemplateSyntaxError: 'app2' 不是有效的标签库..

您是否尝试过 from 指令:

{% load tags from app1 %}
{% load tags from app2 %}

在这种情况下,有2个应用的模板标签文件名相同,那么只有第一个遇到的应用的模板标签(因为它们在设置 installed_apps 中定义) 在 {% load tags %}.

时可以访问

所以,我终于使用了这个解决方法。

my_app
 - templatetags
   - __init__
   - app2_tags_copy.py 

我在我的一个应用程序中创建了一个新的标签文件(app2_tags_copy.py),并导入了第二个应用程序的模板标签代码。这个文件只有一行导入代码:

from app2.templatetags.tags import * 

通过这种方式,您只需在模板中执行 {% load app2_tags_copy %} 即可使用 app2_tags_copy.py 名称的 tags.py 代码。即使更新了app2,也会使用更新后的标签代码。