Python Django字符串\u if\u无效且为默认值
我在django模板设置中将Python Django字符串\u if\u无效且为默认值,python,django,templates,django-templates,Python,Django,Templates,Django Templates,我在django模板设置中将string\u if\u invalid设置为“invalid”。 还有一些模板如下所示: {{ some_nonexisting_value|default:'Default value' }} TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'APP_DIRS': True, 'DIRS': [
string\u if\u invalid
设置为“invalid”。
还有一些模板如下所示:
{{ some_nonexisting_value|default:'Default value' }}
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',
]
},
},
]
渲染后的结果看起来像是“无效的”。因此,不使用默认值。
如果字符串无效,是否有任何方法可以使用默认值而不更改模板
编辑:
模板设置如下所示:
{{ some_nonexisting_value|default:'Default value' }}
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',
]
},
},
]
否,无法让
default
过滤器显示提供的默认值,而不是无效字符串
请注意,如果无效,则警告不要使用字符串\u
选项:
仅用于调试目的强>
虽然string\u if\u invalid
可能是一个有用的调试工具,但将其作为“开发默认值”打开是个坏主意
许多模板,包括管理站点中的模板,在遇到不存在的变量时依赖于模板系统的静默。如果将'
以外的值指定给string\u If\u无效
,则这些模板和站点将遇到渲染问题
通常,只有在调试特定模板问题时才应启用string\u if\u invalid
,然后在调试完成后清除
对于您自己的模板,我想您可以编写自己的模板标记,该标记采用变量名和默认值,然后尝试从模板上下文中获取变量。但是,这并不能解决其他使用常规
默认
过滤器的模板中的问题,包括Django管理员。请显示模板设置。已编辑问题