首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义标记(模板标记)未加载

自定义标记(模板标记)未加载
EN

Stack Overflow用户
提问于 2019-08-26 16:44:22
回答 1查看 300关注 0票数 0

我正在尝试创建一个模板标记,以便找出当前用户属于哪个组。我在另一个项目中也有相同的设置,但那个正在工作,但这个没有。这就是我所拥有的:

项目结构:

代码语言:javascript
复制
- root_directory
-- myproject
--- home
---- templatetags
----- __init__.py
----- custom_tags.py
---- __init__.py
---- urls.py
---- ...
--- myproject
---- settings.py
---- ...

settings.py

代码语言:javascript
复制
INSTALLED_APPS = [
    .....
    'home.templatetags',
]

custom_tags.py

代码语言:javascript
复制
from django import template

register = template.Library()


@register.filter
def has_group(user, group_name):
    return user.objects.filter(group_name=group_name).

home_base.html

代码语言:javascript
复制
{% extends 'navbar.html' %}

{% block content %}

    {% load custom_tags %}

{% endblock %}

回溯:

代码语言:javascript
复制
Internal Server Error: /
Traceback (most recent call last):
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\defaulttags.py", line 1021, in find_library
    return parser.libraries[name]
KeyError: 'custom_tags'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\views\generic\base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "D:\Projects\1-2-1\monthlymeeting\home\views.py", line 9, in get
    return render(request, self.template_name, {'entry': 1})
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\shortcuts.py", line 36, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\loader.py", line 61, in render_to_string
    template = get_template(template_name, using=using)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\loader.py", line 15, in get_template
    return engine.get_template(template_name)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\backends\django.py", line 34, in get_template
    return Template(self.engine.get_template(template_name), self)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\engine.py", line 143, in get_template
    template, origin = self.find_template(template_name)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\engine.py", line 125, in find_template
    template = loader.get_template(name, skip=skip)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\loaders\base.py", line 30, in get_template
    contents, origin, origin.template_name, self.engine,
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\base.py", line 156, in __init__
    self.nodelist = self.compile_nodelist()
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\base.py", line 194, in compile_nodelist
    return parser.parse()
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\base.py", line 478, in parse
    raise self.error(token, e)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\base.py", line 476, in parse
    compiled_result = compile_func(self, token)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\loader_tags.py", line 266, in do_extends
    nodelist = parser.parse()
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\base.py", line 478, in parse
    raise self.error(token, e)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\base.py", line 476, in parse
    compiled_result = compile_func(self, token)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\loader_tags.py", line 209, in do_block
    nodelist = parser.parse(('endblock',))
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\base.py", line 478, in parse
    raise self.error(token, e)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\base.py", line 476, in parse
    compiled_result = compile_func(self, token)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\defaulttags.py", line 1078, in load
    lib = find_library(parser, name)
  File "D:\Projects\1-2-1\monthlymeeting\venv\lib\site-packages\django\template\defaulttags.py", line 1025, in find_library
    name, "\n".join(sorted(parser.libraries)),
django.template.exceptions.TemplateSyntaxError: 'custom_tags' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_static
admin_urls
cache
comments
i18n
l10n
log
static
staticfiles
tz

我尝试了以下几点:

  1. 重新设计整个项目。
  2. 删除所有.pyc文件。
  3. 尝试在settings.py中作为myproject.home.templatetags和home.templatetags.custom_tags导入它。
  4. 重新启动服务器、浏览器、PC。
  5. 模板中的init文件是空的。
  6. 我从PyCharm中删除了templatetag文件夹,并将它从PyCharm中重新创建为一个Package (以及目录)。
  7. 在manage.py shell中,我尝试使用home.templatetags import custom_tags导入,并加载它,没有任何错误。

同样的结构正在为我的另一个项目工作。我不知道怎么回事。唯一的区别是这个项目是Django 2.2.4,另一个是2.2.3。这个项目还有一个额外的应用程序django-contrib-comments

我一直在试图解决这个问题,我已经用尽了所有我可以在网上找到的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-26 17:23:21

您需要在模板中{% load %}自定义标记。

  • INSTALLED_APPS中删除,因为这只适用于应用程序(但您的应用程序绝对应该在其中,例如home)
  • 使用这些标记在模板顶部添加{% load custom_tags %}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57661872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档