Я сталкиваюсь с ошибкой TemplateSyntaxError в своем проекте Django при рендеринге шаблона. Я вижу сообщение об ошибке: TemplateSyntaxError at
/admin/dashboard/program/add/
Invalid filter: 'length_is'
Django Version: 5.1
Python Version: 3.12.4
Error Location: This error appears in a Django template at line 22 of the fieldset.html file.
{% for line in fieldset %}
<div class = "form-group{% if line.fields|length_is:'1' and line.errors %} errors{% endif %}{% if not line.has_visible_field %} hidden{% endif %}{% for field in line %}{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% endfor %}">
<div class = "row">
{% for field in line %}
<label class = "{% if not line.fields|length_is:'1' and forloop.counter != 1 %}col-auto {% else %}col-sm-3 {% endif %}text-left" for = "id_{{ field.field.name }}">
{{ field.field.label|capfirst }}
{% if field.field.field.required %}
<span class = "text-red">* </span>
{% endif %}
</label>
<div class = "{% if not line.fields|length_is:'1' %} col-auto fieldBox {% else %} col-sm-7 {% endif %}
{% if field.field.name %} field-{{ field.field.name }}{% endif %}">
Что я пробовал:
Проверено наличие пользовательских фильтров:
Я проверил свой проект и установленные в нем пакеты, чтобы проверить, существует ли собственный фильтр с именем length_is. Я обнаружил, что в моем проекте такой пользовательский фильтр не определен.
Проверенная установка Django:
Я убедился, что Django правильно установлен и обновлен до версии 5.1.
Рассмотренный код шаблона:
Я внимательно изучил код шаблона, вызывающий ошибку. Я обнаружил, что используется line.fields|length_is:'1', но фильтр length_is не является стандартным фильтром Django.
Поиск ошибок пакета:
Я просмотрел документацию и отчеты об ошибках, связанные с django-jazzmin, чтобы узнать, есть ли какие-либо упоминания о проблеме с фильтром length_is, но не смог найти соответствующей информации.
Чего я ожидал:
Я ожидал найти либо:
Документация или ссылка, указывающая, что length_is — это стандартный фильтр Django или фильтр, предоставляемый внешним пакетом. Руководство по определению или реализации фильтра length_is, если это пользовательский фильтр, не включенный по умолчанию.
Разрешение, указывающее, что проблема может быть связана с несоответствием версий или проблемой конфигурации, которую можно легко решить.
Поскольку мне не удалось найти никакой полезной информации или документации об этом фильтре, я не знаю, что делать. Будем очень признательны за любую помощь по определению или правильному использованию фильтра length_is в шаблонах Django.
🤔 А знаете ли вы, что...
Python подходит для начинающих программистов благодаря своей простоте и читаемости кода.
Я столкнулся с той же проблемой с Django Jazzmin, когда обновил свою версию Django. Вот как это исправить.
Шаг 1. Создайте файл customtags.py
в папке одного из ваших приложений.
myapp/templatetags/customtags.py
Шаг 2. Вставьте код length_is
из репозитория Django на GitHub
Шаг 3. Добавьте относительный путь к файлу пользовательских тегов в файл settings
. В разделе TEMPLATES
.
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [BASE_DIR / "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.context_processors.media",
"django.template.context_processors.i18n",
],
"builtins": ["myapp.templatetags.customtags"], # <- HERE
},
},
]
Источник: Как исправить удаленные теги шаблона в администраторе Django