【问题标题】:TypeError: 'Library' object is not callableTypeError:“库”对象不可调用
【发布时间】:2019-01-19 10:20:25
【问题描述】:

我的项目结构如下:

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

【问题讨论】:

    标签: python django typeerror django-template-filters


    【解决方案1】:
    @register.filter(name='rep_slash')
    

    【讨论】:

      【解决方案2】:

      您忘记在@register 之后调用filter。 这个filter 有助于将可调用对象注册为模板过滤器。

      你的函数应该是这样的:

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

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-26
        • 2018-12-25
        • 2021-04-15
        • 2011-10-01
        • 2020-11-10
        • 2017-09-09
        • 2016-07-23
        • 2015-03-07
        相关资源
        最近更新 更多