django自定义模板引用问题

在使用Django自定义模板过滤器initial_letter_filter时遇到了TemplateSyntaxError。问题在于在base.html中加载了过滤器,但在使用过滤器的子模板中未加载,导致无法找到过滤器。正确做法是将{% load review_extrat %}放在引用过滤器的每个模板中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到的问题

TemplateSyntaxError("Invalid filter: '%s'" %initial_letter_filter)

铺垫知识

过滤器应用在django的模板中,例如 

<p>Dear {{ person_name|cut:'5'}}</p>

即可将person_name中的字符‘5’全部剔除后输出到HTML上,cut即为过滤器。

过滤器也可视为一个普通的函数,以cut为例,参数有两个 一个是管道符('|')前面运算所产生的值,另一个是冒号(‘:’)后面的值。

如果实现一个自定义过滤器需要几个步骤,

创建一个APP并在settings文件中注册

在APP中创建templatetags文件夹,确保文件夹下有init.py文件,再在该文件夹中创建一个过滤器文件 例如 review_extract.py

然后在需要用到的模板中在用之前加入这句话    {% load review_extrat %} load后面的蓝色字符与过滤器文件名保持一致。然后问题来了。

  我创建了一个过滤器 名为  initial_letter_filter 但引入到模板中却提示TemplateSyntaxError("Invalid filter: '%s'" %initial_letter_filter)问题,令我百般费解,查询很久也没有查询到。

   我的问题出现在了引用过滤器的模板Thanks_email.html和base模板之间的问题。

   前方提到过,在过滤器使用前要在模板中加入一句话 {% load review_extrat %} ,但是我把这句话加到了base.html中想省事,但是在使用过滤器的子模板中没有加入这句话,所以查询不到。所以,这句话要加在引用过滤器的模板中,才可以找到过滤器,加入到base里面没有用的。像这样

 

好了问题解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值