Я хочу, чтобы меню было индивидуальным, в зависимости от того, членом какой группы вы являетесь. Я использую Django 1.10.1, allauth и так далее. Когда я пытаюсь сделать свой шаблонный тег, он терпит неудачу и говорит: ¨
TemplateSyntaxError at /
'my_templatetag' is not a registered tag library. Must be one of:
account
account_tags
admin_list
admin_modify
admin_static
admin_urls
cache
i18n
l10n
log
socialaccount
socialaccount_tags
static
staticfiles
tz
my_templatetag.py выглядит так:
from django import template
from django.contrib.auth.models import Group
register = template.Library()
@register.filter(name='has_group')
def has_group(user, group_name):
group = Group.objects.get(name=group_name)
return group in user.groups.all()
и эта ошибка появляется в моем файле .html, в котором говорится,
{% load my_templatetag %}
Я пытался перезапустить сервер миллионы раз, также я пытался изменить все имена, а приложение является частью INSTALLED_APPS в settings.py. Что я делаю неправильно?
django
django-allauth
templatetags
Sliljedal
источник
источник
В django 1.9 вы можете загрузить эти новые теги / фильтры в таких настройках:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], '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', 'app.apptemplates.load_setting', ], 'libraries':{ 'my_templatetag': 'app.templatetags.my_templatetag', } }, },
]
источник
Убедитесь, что вы не пропустите ни одного из следующих шагов:
Создайте папку с названием "templatetags" на том же уровне, что и models.py и views.py в папке вашего приложения.
Ваше приложение должно быть в INSTALLED_APPS в settings.py
В папке templatetags должен быть __init__.py
Перезагрузите сервер django
источник
default_app_config = 'custom_admin.apps.Config'
. В противном случае Django 1.10 не загружает теги шаблонов. Однако я не вижу этого явно в документации.__ini__.py
, но знаете ли вы, почему раньше он работал на Python3, а не на Python2?В моем случае проблема заключалась в том, что я использовал
{% load filter_method_name %}
Мне пришлось сменить на
{% load filename %}
Затем мне пришлось перезапустить сервер.
источник
Где хранится my_templatetag.py? Он должен храниться в каталоге под названием 'templatetags', который находится внутри приложения.
См. Https://docs.djangoproject.com/en/dev/howto/custom-template-tags/, если это не так.
источник
Перезагрузите сервер django. У меня это сработало после установки папки templatetag в приложении и template_name.py в папке templatetag.
источник
Если это кому-то помогает, проблема в моем случае заключалась в том, что я использовал кавычки при попытке загрузить тег (ы)
{% load 'my_templatetag' %} <!-- incorrect -->
вместо
{% load my_templatetag %} <!-- correct -->
Примечание:
extends
необходимо заключить имя файла в кавычки, но неload
источник
вам нужно вручную остановить сервер разработки и запустить его снова, чтобы Django мог идентифицировать новые теги шаблона
источник
Я использую Django 1.11, и у меня была такая же проблема. Некоторые ответы здесь верны, но некоторых вещей может не хватать. Вот что я сделал:
Цитата предыдущего пользователя:
Но перед повторным запуском сервера Django добавьте это в файл, содержащий теги:
from django import template register = template.Library()
Затем вы можете перезапустить сервер.
источник
Я знаю, что это немного устарело, но сегодня я столкнулся с той же проблемой. Я нашел решение в документации: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
Простое копирование __init__.py из другого места в каталог нового templatetag поможет разобраться.
источник
Я решил это, добавив папку templatestag в корень с файлом filter.py, определяющим мои фильтры, затем я настроил свой settings.py .
Пожалуйста, проверьте мой полный ответ по этой проблеме в этой же теме.
источник
поместите my_templatetag.py внутри app_name / templatetags, затем создайте init .py внутри app_name / templatetags .. Затем откройте терминал в папке проекта и дайте команду python manage.py shell
источник
вы просто вырезаете / удаляете свой код, который написан внутри (пример templatetags / home.py) из home.py, вы удаляете свой код и перезапускаете сервер и снова вставляете свой код в home.py, он будет работать.
источник
Да, эта проблема, с которой вы сейчас столкнулись, из-за более старой версии django или сложно написать «Амортизация»
Если в вашем шаблоне / HTML-файлах есть эти типы тегов, измените их с помощью ..
> {{% load staticfiles %} or {% load admin_static %}, {% load > admin_static %}}
изменить с
{% load static %}
Ближе к делу .. Просто выполните эти действия. Замените все это из нашего BAse.html / или любого типа HTML.
источник
сначала остановите сервер. удалите / вырежьте код из templatetags / tag.py и перепишите / вставьте его. затем запустите сервер. это сработало для меня
источник