我具有以下项目结构:
kjp_app/
templatetags/
__init__.py
myfilters.py
在myfilters.py中,我有以下代码:
from django import template
register = template.Library()
@register(name='rep_slash')
def rep_slash(value):
if '' in value:
return value.replace('','/')
在相应的html文件中,我加载了myfilters并使用了rep_slash
,如下所示,
{% extends 'kjp_app/base.html' %}
{% load myfilters %}
{% block body_block %}
{% if client_rec %}
<table>
{% for rec in client_rec %}
<tr>
<td>{{ rec.client_name }}</td>
<td>{{ rec.client_designation|rep_slash }}</td>
<td>{{ rec.client_job_location }}</td>
<td>{{ rec.client_phone_num }}</td>
</tr>
{% endfor%}
</table>
{% endif %}
{% endblock %}
运行服务器时出现以下错误:
File "D:\Django_projects\Pradeep Website\kjp_enterprise\kjp_app\templatetags\myfilters.py", line 5, in <module>
@register(name='rep_slash')
TypeError: 'Library' object is not callable
[19/Jan/2019 14:57:45] "GET /kjp_app/view_clients HTTP/1.1" 500 151123
I am using Django 2.1.5 and python3.7
答案 0 :(得分:1)
@register.filter(name='rep_slash')
答案 1 :(得分:0)
您忘记在filter
之后致电@register
。
filter
有助于将可调用项注册为模板过滤器。
您的函数应如下所示:
@register.filter(name='rep_slash')
def rep_slash(value):
if '' in value:
return value.replace('','/')
希望您对此有帮助。