Подтвердить что ты не робот

Ошибка синтаксиса шаблона Django

Я пытаюсь использовать django, встроенный в фильтр по умолчанию, используя этот код

{% load sekizai_tags static compress i18n %}
[...]
<title>{{ title|default:"nothing" }}</title>

Но это дает мне следующее исключение

django.template.base.TemplateSyntaxError: default requires 2 arguments, 1 provided

Я использую следующие настройки для моего шаблона бэкэнд

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            str(APPS_DIR.path('templates')),
        ],
        'OPTIONS': {
            'debug': DEBUG,
            'loaders': [
                'django.template.loaders.filesystem.Loader',
                'django.template.loaders.app_directories.Loader',
            ],
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'allauth.account.context_processors.account',
                'allauth.socialaccount.context_processors.socialaccount',
                'django.template.context_processors.i18n',
                'django.template.context_processors.media',
                'django.template.context_processors.static',
                'django.template.context_processors.tz',
                'django.contrib.messages.context_processors.messages',
                'sekizai.context_processors.sekizai',
            ],
        },
    },
]

Мой редактор помечает код как недопустимый, но я проверяю тысячу раз https://docs.djangoproject.com/en/1.8/ref/templates/builtins/

Где это указано в качестве примера:

{{ value|default:"nothing" }}

Я также попытался изменить имя title var, чтобы убедиться, что это не зарезервированное ключевое слово.

4b9b3361

Ответ 1

Убедитесь, что у вас нет пробела после двоеточия.

Это правильно:

{{ title|default:"nothing" }}

Это генерирует исключение:

{{ title|default: "nothing" }}

Ответ 2

Попробуйте:

{{ title|default_if_none:"nothing" }}

default_if_none отобразит данную строку, если переменная имеет значение "Нет".

default отобразит строку, если переменная оценивается как False, т.е. пустые строки, пустые списки и т.д.

Также убедитесь, что вы отправляете переменную title в свой контекст, если вы не должны использовать default_if_none