当尝试通过django-admin-tools创建菜单时,Django引发了不正确的配置

时间:2016-01-10 18:31:45

标签: python django

我成功配置了django-admin-tools以供使用。我尝试创建自定义菜单as told in documentation,如下所示:

python3 manage.py custommenu

然而,这引发了ImproperlyConfugured错误,说:

django.core.exceptions.ImproperlyConfigured: app_dirs must not be set when loaders is defined.

我查看了目录,menu.py已成功创建,但内容为空,与文档相对。

我对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',
                'admin_tools.template_loaders.Loader',
            ],
            'loaders': [
                'django.template.loaders.filesystem.Loader',
                'django.template.loaders.app_directories.Loader',
                'admin_tools.template_loaders.Loader',
            ],
        },
    },
]

这是否意味着我需要在创建任何应用之前安装django-admin-tools

环境

  • python3
  • django 1.8.7

3 个答案:

答案 0 :(得分:11)

删除'APP_DIRS': True,行。

答案 1 :(得分:1)

Erdin Eray,我知道已经有一段时间了,但是我遇到了TypeError: 'Loader' object is not iterable,这是您在接受的答案的注释中描述的问题。发生这种情况是因为如上所述,我在admin_tools.template_loaders.Loader中包含了context_processors,这会导致错误。仅应将其包含在loaders中。

答案 2 :(得分:1)

如果您想知道为什么需要删除'APP_DIRS': True,才能使其正常工作,那么我建议您阅读文档-https://docs.djangoproject.com/en/dev/ref/templates/api/#django.template.loaders.app_directories.Loader
注意:请为您的Django版本使用相应的文档。

常规:
APP_DIRS和选项loaders不能同时使用,因此您有两个选择:

  1. loaders删除OPTIONS
  2. 删除APP_DIRS

问题:
由于Erdin要使用'admin_tools.template_loaders.Loader',因此他必须删除APP_DIRS。但是,由于其他原因,您可能会翻滚这个问题,因此考虑选项1可能是值得的。