Django:创建自定义模板标签 - >导入错误

时间:2013-10-20 15:41:30

标签: python django django-cms

我很遗憾再次提出这个问题,但是我尝试了一些来自堆栈溢出和一些教程的解决方案,但我还是无法创建自定义模板标记。当我尝试通过ImportError: No module named test_tag启动服务器时,我获得的是python manage.py runserver

我创建了一个非常基本的模板标记(在此处找到:django templatetag?),如下所示:

我的文件夹结构:

demo
    manage.py
    test
        __init__.py
        settings.py
        urls.py
        ...
        templatetags
            __init__.py
            test_tag.py

test_tag.py:

from django import template
register = template.Library()

@register.simple_tag
def test_tag(input):
    if "foo" == input:
        return "foo"
    if "bar" == input:
        return "bar"
    if "baz" == input:
        return "baz"
    return ""

的index.html:

{% load test_tag %}
<html>
    <head>
    ...
    </head>
    <body>
        {% cms_toolbar %}

        {% foobarbaz "bar" %}
        {% foobarbaz "elephant" %}
        {% foobarbaz "foo" %}
    </body>
</html>

和我的settings.py:

INSTALLED_APPS = (
    ...
    'test_tag',
    ...
)

如果您需要我的settings.py中的更多信息以及我做错了什么,请告诉我,以便我甚至无法启动我的服务器。 (如果我从已安装的应用程序中删除'test_tag',我可以启动服务器,但我得到错误,当然不知道test_tag。)

由于

1 个答案:

答案 0 :(得分:4)

templatetags文件夹应位于应用程序中。

您的项目树应该类似于:

demo
    manage.py
    test
        __init__.py
        settings.py
        urls.py
    test_app
        __init__.py
        models.py
        tests.py
        views.py
        templatetags
            __init__.py
            test_tag.py

然后,将test_app添加到INSTALLED_APPS,然后从那里删除test_tag