自定义Django模板标签未加载到模板中

时间:2017-03-08 19:40:29

标签: python django templates django-templates templatetags

我一直在互联网上搜索这个问题很长一段时间,但一直没能解决我的问题。我试图在我的一个Django模板中连接字符串,最初使用add这样......

{% with "http://127.0.0.1:8000/post/"|add:p.post_id|add:"/" as post_link %}
... used here ...
{% endwith %}

...但发现这是一种多变的错误形式。所以我尝试创建一个自定义模板标签,它将使用名称addstr ...

连接字符串
{% with "http://127.0.0.1:8000/post/"|addstr:p.post_id|addstr:"/" as post_link %}
... used here ...
{% endwith %}

...但是在模板渲染过程中出现了#34;错误,无效的过滤器:' addstr'"我这样做错误。

我在正确的位置创建了一个templatetags目录,其中包含 init .py和cloud_extras.py。 cloud_extras.py的内容是:

from django import template

register = template.Library()

@register.filter
def addstr(arg1, arg2):
    """concatenate arg1 & arg2"""
    return str(arg1) + str(arg2)

我还在settings.py中正确安装了应用程序,并正确地在视图中加载模板(我知道这是真的,因为我已经使用了一段时间了,并决定创建帖子标题的链接)

非常感谢您的时间。

1 个答案:

答案 0 :(得分:1)

在通话之前,模板中是否有{% load cloud_extras %}

顺便说一句,看起来您可能想要查看其他示例和url tag,因为您可能不想首先使用类似的硬编码链接。相反,尝试找到一种方法来生成给定post对象的正确相对链接。