【问题标题】:Django custom template filter can't workDjango 自定义模板过滤器不起作用
【发布时间】:2011-03-29 07:59:11
【问题描述】:

我有一个错误: 'run_target' 不是有效的标签库:找不到模板库 run_target,尝试 django.templatetags.run_target

我不知道为什么它不能工作,即使我添加了'db.templatefilters'它也不能工作...... 谁能帮我?谢谢你:)

下面是我的文件结构:

db/
    models.py
    templatefilters/
        __init__.py
        run_target.py
templates/
    run.html

run_target.py

from django import template
register = template.Library()

@register.simple_tag
def dictKeyLookup(the_dict, key):
       return the_dict[key]

运行.html

{% extends "index.html" %}
**{% load run_target %}**
{% block content %}
<div style="margin-left:150px; margin-top:10px">
<a href="/home">Home</a> >> <b>run</b>
</div>
<form name="form" method="post">
<br>
<input type="submit" value="Delete" style="margin-left:149px; width:80px; height:30px">
<table border="1"; style="margin-left:150px; border-collapse:collapse;margin-top:10px"; cellpadding="4" borderColor=black>

{% for run in run_list %}
    <tr>
    <td>{% dictKeyLookup target_dict run.id %}</td>
    </tr>
{% endfor %}
</table>
</form>
{% endblock %}

【问题讨论】:

    标签: django


    【解决方案1】:

    第一件事:您是否在进行更改后重新启动您的服务器?这是微不足道的,但大多数人因此而陷入困境。


    db 在您的INSTALLED_APPS 设置中吗?

    如果是这样,那么您还缺少另外两件事:

    • db 文件夹本身中有一个 __init__.py 文件(templatefilters 目录中有一个文件,但其父目录没有)
    • templatefilters 文件夹应称为 templatetags(请参阅文档的 Code layout 部分)。

    顺便说一句,db 不是一个很好的应用名称 - 将其命名为更接近 其功能的名称。

    【讨论】:

    • 感谢您的回答,我不知道文件夹名称'templatetags'不能更改,再次感谢:)
    • 别忘了重启服务器...看起来很简单,但这是我的问题
    【解决方案2】:

    如果一切都按照文档中的那样完成:

    • init.py 在 app 文件夹和 templatetags 文件夹内
    • settings.py 中 INSTALLED_APPS 部分中的应用名称

    如果您在服务器运行期间使用新标签/过滤器对模块进行了编码,则可以通过重新启动服务器来解决问题。

    【讨论】:

      猜你喜欢
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 2015-06-18
      • 2016-05-20
      • 2013-03-26
      • 2018-05-04
      相关资源
      最近更新 更多