4

例如我有 2 个模板标签

app1  
    templatetags  
        app1_tags.py  
            def custom_tag()  
app2  
    templatetags  
        app2_tags.py  
            def custom_tag()  

如果我在模板中加载两个模板标签

{% load app1_tags %}
{% load app2_tags %}

我有两个带有名称的标签custom_tag。如何在我的模板中使用它们?我必须重命名它们吗?

4

1 回答 1

3

我知道这不是最好的解决方案,但根据您的需要,它可能会有所帮助。

仅适用于您制作的应用程序或您覆盖模板标签的情况

此选项为每个标签赋予不同的名称:

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导入您的项目

于 2015-05-14T06:50:09.483 回答