django.template.base.TemplateSyntaxError:默认值需要2个参数,已提供1个

sczxawaw  于 2023-07-01  发布在  Go
关注(0)|答案(3)|浏览(117)

我正在尝试使用Django的内置'默认'过滤器使用此代码

<title>{{ title|default :"nothing" }}</title>

但它给了我以下例外
django.template.base.TemplateSyntaxError:默认值需要2个参数,已提供1个
我正在为我的模板后端使用以下设置

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的名称,以确保它不是保留关键字。

qf9go6mv

qf9go6mv1#

确保冒号后面没有空格。
这是正确的:

{{ title|default:"nothing" }}

这会抛出一个异常:

{{ title|default: "nothing" }}
h43kikqp

h43kikqp2#

尝试:

{{ title|default_if_none:"nothing" }}

default_if_none如果变量为'None',则显示给定的字符串。
default将显示字符串,如果变量计算为False,即空字符串,空列表等

同时确保在上下文中发送title变量,否则必须使用default_if_none

ecfdbz9o

ecfdbz9o3#

使用Django模板过滤器,在:之前或之后放置空格会导致错误,如下所示:

# Space (Error)
                ↓ ↓
{{ title|default : "nothing" }}

因此,不要在那里放置任何空间,以免出现错误,如下所示:

# No space (No error)
               ↓ ↓
{{ title|default:"nothing" }}

此外,在|之前或之后放置空间不会出现错误:

# Space (No error)
        ↓ ↓
{{ title | default:"nothing" }}

相关问题