django报错ImproperlyConfigured("Template engine aliases aren't unique, duplicates: {}. ""Set a unique NAME for each engine in settings.TEMPLATES.".format(", ".join(duplicates)))怎么办
发布时间:2023-04-05 09:14:10
报错的原因这个错误是由于在 Django 的设置中 TEMPLATES 字典中定义了重复的模板引擎别名导致的。Django 无法确定使用哪个模板引擎来渲染模板,因此抛出了这个错误。如何解决解决方法是在 settings.py 文件中 TEMPLATES 字典中给每个模板引擎定义一个唯一的 NAME。
报错的原因
这个错误是由于在 Django 的设置中 TEMPLATES 字典中定义了重复的模板引擎别名导致的。 Django 无法确定使用哪个模板引擎来渲染模板,因此抛出了这个错误。解决方法就是在settings.py 中 TEMPLATES 字典中给每个模板引擎定义一个唯一的NAME。
如何解决
解决方法是在 settings.py 文件中 TEMPLATES 字典中给每个模板引擎定义一个唯一的 NAME。
例如:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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',
],
'builtins': [
'django.templatetags.i18n',
],
'loaders': [
('django.template.loaders.cached.Loader', [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
]),
],
},
'NAME': 'django_templates',
},
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [],
'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',
],
},
'NAME': 'jinja2_templates',
},
]
在这个例子中,我们给 Django 默认的模板引擎定义了 'django_templates',并给 Jinja2 定义了 'jinja2_templates' 作为别名。
使用例子
是的, 下面是一个简单的例子:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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',
],
},
'NAME': 'django_templates', # <-- 设置唯一的名称
},
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [],
'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',
],
},
'NAME': 'jinja2_templates', # <-- 设置唯一的名称
},
]
这样就可以避免重复的别名了。
需要注意的是,如果您正在使用自定义模板引擎,也需要在 TEMPLATES 字典中为它们设置唯一的 NAME。