Django无法找到我的自定义模板标签?

0 投票
1 回答
5403 浏览
提问于 2025-04-17 06:33

我正在为我的Django网站创建自定义模板标签。我按照Django的文档做的,在我的主应用程序里创建了一个 templatetags 目录。

/project/apps/core/templatetags
                 -/__init__.py
                 -/core_extras.py

因为我不确定这是否是问题的原因,所以我想提一下我在 settings.py 文件里有这个设置。

sys.path.insert(0, join(PROJECT_ROOT, "apps"))
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_evolution',
'apps.core',
)

core_extras.py

from django import template
import settings

register = template.Library()

class SiteNameNode(template.Node):
def __init__(self):

def render(self, context):
    site_name = getarrr(settings, "SITE_NAME", false)
    if not site_name:
        return "<!-- SITE_NAME not setting in Settings -->"
    if settings.DEBUG:
        return 'Debug || ' + site_name
    return site_name
@register.tag(name="site_name")
def find_site_name(parser, token):
return SiteNameNode()

main.html

{% load core_extras %}

错误

In template /cygdrive/d/Users/Kin/BitNami DjangoStack projects/flipfinder/templates/main.html, error at line 1
'core_extras' is not a valid tag library: Template library core_extras not found, tried django.templatetags.core_extras,django.contrib.admin.templatetags.core_extras

有没有人遇到过类似的问题?我是不是漏掉了什么明显的东西。我检查了一遍所有的内容,但似乎找不到其他人有类似的问题。

1 个回答

3

因为语法错误,导致导入失败。Django的模板系统会直接忽略这个错误。

这一行:

site_name = getarrr(settings, "SITE_NAME", false)

应该改成:

site_name = getattr(settings, "SITE_NAME", false)

撰写回答