TypeError:“库”对象不可调用

时间:2019-01-19 10:20:25

标签: python django typeerror django-template-filters

我具有以下项目结构:

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

2 个答案:

答案 0 :(得分:1)

@register.filter(name='rep_slash')

答案 1 :(得分:0)

您忘记在filter之后致电@registerfilter有助于将可调用项注册为模板过滤器。

您的函数应如下所示:

@register.filter(name='rep_slash')
def rep_slash(value):
    if '' in value:
        return value.replace('','/')

希望您对此有帮助。