【问题标题】:Django: Create custom template tag -> ImportErrorDjango:创建自定义模板标签-> ImportError
【发布时间】:2013-10-29 01:10:06
【问题描述】:

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

我创建了一个非常基本的模板标签(在这里找到: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 未知的错误,当然)。

谢谢

【问题讨论】:

    标签: python django django-cms


    【解决方案1】:

    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

    【讨论】:

    • 现在我得到ImportError: No module named test_app
    • @AlexanderScholz 该应用程序应具有标准的“应用程序结构”,请参阅更新后的答案。
    • 啊,我终于明白了 :) 非常感谢。我认为“测试”已经是一个应用程序(我对 django 很陌生)。我可以省略models.pyviews.pytests.py,它可以工作。
    • @AlexanderScholz test 是一个项目,而不是一个应用程序; )
    • 我有一些在整个项目(多个应用程序)中使用的自定义模板标签,它们被放入一个公共目录,例如demo/shared/templatetags.
    猜你喜欢
    • 2018-06-17
    • 1970-01-01
    • 2021-09-30
    • 2021-07-13
    • 2012-06-02
    • 2015-01-20
    • 2012-03-15
    • 2018-06-19
    相关资源
    最近更新 更多