例如,我有2个模板标记
app1
templatetags
app1_tags.py
def custom_tag()
app2
templatetags
app2_tags.py
def custom_tag()
如果我在模板中加载两个templatetags
{% load app1_tags %}
{% load app2_tags %}
我有两个名为custom_tag
的标签。如何在我的模板中使用它们?我必须重命名吗?
答案 0 :(得分:2)
我知道这不是最佳解决方案,但根据您的需求,它可能会有所帮助。
如果应用程序是由您制作的,或者您覆盖模板标记
,仅适用此选项为每个标记指定不同的名称:
@register.filter(name='custom1')
def custom_tag():
# Your code
@register.filter(name='custom2')
def custom_tag():
# Your code
通常如果您在不说出姓名的情况下注册标签,Django会将该功能用作过滤器名称,但如果您通过了arg'名称'当您注册过滤器时,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 导入项目