9阅网

您现在的位置是:首页 > 知识 > 正文

知识

python - django中另一个自定义模板标签注册的问题

admin2022-11-07知识16

我知道有类似的问题,我试着去学习,但还是不行。我试图在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