python - 为什么我在 Django 中的模板标签不起作用?

标签 python html django templates

{% 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/

相关文章:

javascript - AngularJS $uibModal 作为具有不同 Controller 的服务

django - 在 django-MPTT 中重新排序子节点

javascript - 为图表使用动态数据

python - 停止 JVM 后,无法再次启动它

python - 在两个数据帧上应用 pandas groupby

python导入paramiko报错 "cannot import name util"

python - 如何判断列表是否按升序排列?只需要返回 True 或 False

javascript - 如何让网页只显示一次?

html - 更改 float 时,Div 不会更改小分辨率的位置

python - 下载html django模板中的本地文件链接