Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
2 / 2 / 0
Регистрация: 31.10.2013
Сообщений: 123

Django 4.1 и 4.2 не регистрирует пользовательские "ТЕГИ"

14.04.2023, 09:35. Показов 1632. Ответов 5

Студворк — интернет-сервис помощи студентам
Всем привет, решил изучить django. Дошел до пользовательских тегов. Но при попытке вывести тег на страничку получаю ошибку:
‘inventory_tags’ is not a registered tag library.
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Request Method: GET
Request URL:    http://127.0.0.1:8000/
Django Version: 4.1
Exception Type: TemplateSyntaxError
Exception Value:    
'inventory_tags' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_urls
cache
i18n
l10n
log
static
tz

Все сделал как в доках, создал модуль на уровне приложения (папку templatetags с файлом __init__.py в папке с приложением). создал в модуле пакет со следующим содержимым:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from models import *
from django import template
tag_register = template.Library()
#Сначала погрешил что с декоратором что то не так 
#@tag_register.simple_tag(name="hostlist")
def hostList(id=None):
    if id:
        hosts = Hosts.objects.get(id=id)
    else:
        hosts = Hosts.objects.all()
 
# И зарегистрировал непосредственно через класс, все равно не заработало
tag_register.simple_tag(hostList, 'hostlist')
.
Не могу понять в чём проблема. Настройки проекта не менял, кроме как "зарегистрировал" приложение (добавил в INSTALLED_APPS).
После этого попробовал создать папку с тегами на уровне проекта(на одном уровне с manage.py), но тоже результата нет.
Прошу помочь.

Файл setting.py
Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
"""
Django settings for inv_prj project.
 
Generated by 'django-admin startproject' using Django 4.2.
 
For more information on this file, see
https://docs.djangoproject.com/en/4.2/topics/settings/
 
For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.2/ref/settings/
"""
 
from pathlib import Path
 
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
 
 
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/
 
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = "django-insecure-_fu4)l#169_@uqx@_r=x-a4*nep84%$w8v8yv@%9%=#16!&)p2"
 
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
 
ALLOWED_HOSTS = []
 
 
# Application definition
 
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "inventory.apps.InventoryConfig", # Приложение проекта
]
 
MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
]
 
ROOT_URLCONF = "inv_prj.urls"
 
TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [],
        "APP_DIRS": True,
        "OPTIONS": {
            # 'builtins':[
            #     'inventory.templatetags.sipletags',
            # ],
            "context_processors": [
                "django.template.context_processors.debug",
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ],
        },
    },
]
 
WSGI_APPLICATION = "inv_prj.wsgi.application"
 
 
# Database
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
 
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": BASE_DIR / "db.sqlite3",
    }
}
 
 
# Password validation
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
 
AUTH_PASSWORD_VALIDATORS = [
    {
        "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
    },
    {
        "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
    },
    {
        "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
    },
    {
        "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
    },
]
 
 
# Internationalization
# https://docs.djangoproject.com/en/4.2/topics/i18n/
 
LANGUAGE_CODE = "en-us"
 
TIME_ZONE = "UTC"
 
USE_I18N = True
 
USE_TZ = True
 
 
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.2/howto/static-files/
 
STATIC_URL = "static/"
 
# Default primary key field type
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
 
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"


Дерево проекта
Кликните здесь для просмотра всего текста

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 inv_prj
├───inventory
│   ├───migrations
│   │   └───__pycache__
│   ├───static
│   │   ├───CSS
│   │   └───scripts
│   ├───temlatetags
│   ├───templates
│   │   └───inventory
│   └───__pycache__
├───inv_prj
│   └───__pycache__
└───temlatetags


Шаблон
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{% load inv_tags %}
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ title }}</title>
</head>
<body>
    <h1>Test page</h1>
    {{ hostlist }}
</body>
</html>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.04.2023, 09:35
Ответы с готовыми решениями:

Пользовательские теги
Нужно вывести данные из базы на JSP страницу использовав(написав свой) пользовательский тэг и не использовав скриптлета. Вот мои...

HTML-теги в своём блоге на Django
не знал как обозвать темку, получилось коряво в общем есть модель блога. class BlogCategory(models.Model): category =...

Теги к новостям. Если теги повторяются, то добавлять их в БД не нужно
Не давно начал работать с MVC, надо сделать теги к материалу, т.е. есть таблица для материала (Id, название, описание, теги), также есть...

5
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
14.04.2023, 11:39
1) Дерево проекта без файлов не очень информативно.
2)
Цитата Сообщение от Stazot Посмотреть сообщение
tag_register = template.Library()
https://docs.djangoproject.com... late-tags/
To be a valid tag library, the module must contain a module-level variable named register that is a template.Library instance
Python
1
2
3
from django import template
 
register = template.Library()
есть предположение, что своеволие здесь не допустимо.
0
2 / 2 / 0
Регистрация: 31.10.2013
Сообщений: 123
14.04.2023, 15:02  [ТС]
Цитата Сообщение от kazak Посмотреть сообщение
есть предположение, что своеволие здесь не допустимо
Спасибо за реакцию. Но тут вы не правы, какая разница как называется ссылка.(как в доках тоже называл когда только столкнулся с функционалом). В системе на линукс запустилось без всяких проблем к стати.
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
14.04.2023, 18:54
Цитата Сообщение от Stazot Посмотреть сообщение
Но тут вы не правы, какая разница как называется ссылка.
Тут Вы создаете расширенный функционал для чужой готовой логики, и если автор этой логики пишет, что в модуле расширения должна быть переменная с определенным названием содержащая определенный объект - крайне не рекомендуется этим пренебрегать, как правило, это не просто прихоть.

Цитата Сообщение от Stazot Посмотреть сообщение
inventory_tags’ is not a registered tag library.
Цитата Сообщение от Stazot Посмотреть сообщение
{% load inv_tags %}
Что за разнобой? Есть подозрение, что ошибка от одного варианта проекта, шаблон от дугого.

Цитата Сообщение от Stazot Посмотреть сообщение
В системе на линукс запустилось без всяких проблем к стати.
Это ни о чем не говорит, могли внести какие-нибудь правки и не обратить на это внимание.

Для начала приведите все в соответствие документации.
0
2 / 2 / 0
Регистрация: 31.10.2013
Сообщений: 123
16.04.2023, 21:29  [ТС]
Цитата Сообщение от kazak Посмотреть сообщение
Тут Вы создаете расширенный функционал для чужой готовой логики, и если автор этой логики пишет, что в модуле расширения должна быть переменная с определенным названием содержащая определенный объект - крайне не рекомендуется этим пренебрегать, как правило, это не просто прихоть
Вы не знаете работу языка. Проблема решилась переустановкой интерпретатора. сначала решил проверить и запустил под линукс всё заработало. После переустановил и на виндовс, тоже заработало. Хотя в в виртуальном окружении работал. В общем, после переустановки заработало.



Проблема решена, всем спасибо.

Добавлено через 2 минуты
Цитата Сообщение от kazak Посмотреть сообщение
то за разнобой? Есть подозрение, что ошибка от одного варианта проекта, шаблон от дугого.
Это я уже экспериментировал. просто перед копированием забыл исправить.
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
17.04.2023, 11:00

Не по теме:

1-е правило инженера: если что-то не получается - попробуй почитать инструкцию.
2-е правило инженера: если по прежнему не получается - попробуй дочитать инструкцию до конца.


Цитата Сообщение от Stazot Посмотреть сообщение
Вы не знаете работу языка.
Крайне смелое утверждение Язык тут не при чем, нужно учитывать нюансы работы фреймворка. Еще раз повторю, если Вы не знаете как фреймворк работает под капотом, то крайне не рекомендуется отходить от инструкций разработчиков этого фреймворка.
Сециально проверил, именование в модуле тэга переменной register любым другим именем приводит к ошибке is not a registered tag library. Django 4.1.7/Ubuntu 22.04
Цитата Сообщение от Stazot Посмотреть сообщение
{{ hostlist }}
И да, сначала не обратил внимания, но в шаблоне Вы обращаетесь к переменной hostlist контекста, тэги вызываются по другому, кастомные в том числе
HTML5
1
{% hostlist %}
Так что, что у Вас там заработало и как после переустановки, нужно еще разобраться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.04.2023, 11:00
Помогаю со студенческими работами здесь

Теги SVG и path. Для чего и что за теги?
Добрый день! Наткнулся на тег SVG , а потом и path. Ищу по ним информацию, но так, чтобы доступно и детально. Может кто-то вкратце...

Не регистрирует
есть такой кодик: &lt;?php session_start(); require 'db.php'; ?&gt; &lt;!DOCTYPE html&gt; &lt;html lang=&quot;ru&quot;&gt; &lt;head&gt; &lt;meta...

камера наблюдения регистрирует
камера наблюдения регистрирует в автоматическом режиме скорость проезжающих мимо нее автомобилей округляя значения скорости до целых чисел...

Kernel-Power - Не регистрирует ошибку
Добрый день, стоит у нас 2 сервера на одном бесперебойнике (15 минут работы ~). При отключении электричества на большее время сервера...

DNS сервер не регистрирует клиентов
Всем доброго времени суток! Ситуация следующая. На одном сервере развернут контроллер домена, DHCP. DNS. До недавнего времени все работало...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru