例如,我有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的标签.如何在我的模板中使用它们?我必须重命名吗?
最佳答案 我知道这不是最好的解决方案,但根据您的需求,它可能会有所帮助.
这仅适用于您制作应用程序或覆盖模板标记的情况
此选项为每个标记指定不同的名称:
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将使用它作为模板标签名称.
如果在注册标记时为它们指定了不同的名称,那么这将是用于加载标记的名称
{% load custom1 %}
{% load custom2 %}
您只需要自定义其中一个的名称,就可以使用另一个的原始名称
导入不同名称下的标签
正如@Igor建议的那样,另一个选择是导入你想要使用的模板和另一个名字,让我们说像别名,这样你就可以避免不同标签/过滤器之间的冲突.
假设您要将标签导入项目,您应该添加标签,如:
your_app / template_tags / my_custom_tag
要使用其他名称从app2上的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导入项目