我知道这不是最好的解决方案,但根据您的需要,它可能会有所帮助。
这仅适用于您制作的应用程序或您覆盖模板标签的情况
此选项为每个标签赋予不同的名称:
app1_tags.py
@register.filter(name='custom1')
def custom_tag():
# Your code
app2_tags.py
@register.filter(name='custom2')
def custom_tag():
# Your code
通常如果你注册标签而不告诉名称,Django 会使用函数作为过滤器名称,但是如果你在注册过滤器时传递 arg 'name',Django 会使用它作为模板标签名称。
Django:自定义模板标签
如果您在注册标签时给它们不同的名称,那将是您将用于加载标签的名称
{% load custom1 %}
{% load custom2 %}
您只需要自定义其中一个的名称,您可以使用另一个的原始名称
以不同名称导入标签
正如@Igor 建议的那样,另一种选择是导入要使用另一个名称的模板,比如说别名,这样您就可以避免具有相同名称的不同标签/过滤器之间的冲突。
假设您想将标签导入您的项目,您应该添加您的标签,如:
your_app/template_tags/my_custom_tag
要在您的应用程序上以不同的名称从 app2 导入标签,您只需将其添加到文件my_custom_tag 中:
from app2.template_tags.app2_tags import custom_tag
register.filter(name="new_custom_tag_name", custom_tag)
在此之后,您已使用新名称new_custom_tag_name将标签custom_tag导入您的项目