Geo*_*nko 5 python django templates django-templates
我已string_if_invalid在 django 模板设置中设置为“无效”。有一些模板看起来像这样:
{{ some_nonexisting_value|default:'Default value' }}
Run Code Online (Sandbox Code Playgroud)
渲染后的结果如下所示'INVALID'。因此,不使用默认值。有什么办法可以使string_if_invalid在不更改模板的情况下使用默认值?
编辑:模板设置如下所示:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'APP_DIRS': True,
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
'OPTIONS': {
'libraries': {
'utm_tags': 'kurator.templatetags.utm_tags',
},
'string_if_invalid': 'INVALID',
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'kurator.context_processors.static_hash',
'kurator.context_processors.debug',
]
},
},
]
Run Code Online (Sandbox Code Playgroud)
不,不可能获得default过滤器显示提供的默认值而不是无效字符串。
请注意,文档警告不要使用string_if_invalid选项:
\n\n仅用于调试目的!
\n尽管
\nstring_if_invalid它可能是一个有用的调试工具,但将其作为\xe2\x80\x98开发默认值\xe2\x80\x99打开是一个坏主意。许多模板(包括管理站点中的模板)在遇到不存在的变量时依赖于模板系统的静默。如果您分配的值不是
\n\'\'tostring_if_invalid,您将遇到这些模板和站点的呈现问题。一般来说,
\nstring_if_invalid仅应在调试特定模板问题时启用,然后在调试完成后清除。
对于您自己的模板,我想您可以编写自己的模板标记,该标记采用变量名称和默认值,然后尝试从模板上下文中获取变量。但是,这并不能解决其他使用常规模板的问题default过滤器的其他模板(包括 Django admin)中的问题。
| 归档时间: |
|
| 查看次数: |
1968 次 |
| 最近记录: |