python - django中另一个自定义模板标签注册的问题
我知道有类似的问题,我试着去学习,但还是不行。我试图在django中注册自定义模板标签。我有以下错误。
django.template.library.InvalidTemplateLibrary: Module order.templatetags.order_tags does not have a variable named 'register'
mytemplate.html:
{% load order_tags %}
settings.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
"menu",
"order",
"page",
# "user.apps.UserConfig",
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "order", 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
"libraries" : {
"order_tags" : "order.templatetags.order_tags",
},
},
},
]
order_tags.py:
from django.template import Library
register = Library()
@register.simple_tag
def create_var(data):
return str(data)
Structure.Mytemplate.html: settings.py: order_tags.py: Structure:
order/
templates/...
templatetags/
__init__.py
order_tags.py
forms.py
models.py
views.py
我试着关闭了服务器。我也试过添加 "order.templatetags",
在settings.py的INSTALLED_APPS中。
我也确认了order_tags.py的加载没有错误。
python manage.py shell
>>> from order.templatetags import order_tags
+++UPDATE+++ 当我更新settings.py时。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "order", 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
出现了不同的回溯:
django.template.exceptions.TemplateSyntaxError: 'order_tags' is not a
registered tag library. Must be one of:
admin_list
admin_modify
admin_static
admin_urls
cache
i18n
l10n
log
static
staticfiles
tz
+++UPDATE 2+++ 我用pdb查了一下问题的源头,可惜我不懂。
> <frozen importlib._bootstrap>(191)_get_module_lock()
(Pdb)
--Return--
> <frozen importlib._bootstrap>(191)_get_module_lock()->_ModuleLock('... 1417680005768
(Pdb)
> <frozen importlib._bootstrap>(149)__enter__()
(Pdb)
...
> <frozen importlib._bootstrap>(91)acquire()
(Pdb)
> <frozen importlib._bootstrap>(92)acquire()
(Pdb)
> <frozen importlib._bootstrap>(101)acquire()
(Pdb)
KeyError: 1884
> <frozen importlib._bootstrap>(101)acquire()
(Pdb)
--Return--
> <frozen importlib._bootstrap>(101)acquire()->None
(Pdb)
KeyError: 1884
> <frozen importlib._bootstrap>(149)__enter__()
(Pdb)
--Return--
> <frozen importlib._bootstrap>(149)__enter__()->None
(Pdb)
KeyError: 1884
> <frozen importlib._bootstrap>(980)_find_and_load()
(Pdb)
--Return--
谢谢!Django==2.2.6 Python==3.7.4