{% gen_aws "hello" %}
在我的文件中,我这样做:
#I want to add "goodbye" to every word passed to this tag.
@register.tag(name="gen_aws")
def gen_aws(s):
return s + "goodbye"
.py 文件没问题...我包含的一切都很好。我还有其他模板“过滤器”可以正常工作。但是后来我在那个文件中添加了这个,这个模板标签不起作用。
最佳答案
您对“不起作用”的描述不是很准确(确切地说它不存在)。但我猜你会收到错误消息,因为找不到标签。
documentation明确指出您的应用程序中需要一个“templatetags”模块,例如“mytags”之类的子模块。然后你必须在每个你想使用它们的模板中包含这些标签。您可以使用 {% load mytags %}
来做到这一点。
然后“mytags”模块包含您的“gen_aws”标签。
编辑: 错误“gen_aws() takes exactly 1 argument (2 given)”的发生是因为普通标签可以以非常定制的方式解析它们的参数。因此他们得到参数“parser”和“token”。在你的例子中,一个所谓的 simple tag应该足够了 - Django 然后自动为您解析参数并将它们作为 Python 值传递。所以只需将 @register.tag
替换为 @register.simple_tag
。
关于python - 为什么我在 Django 中的模板标签不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4955296/