在Django中扩展admin接口

时间:2019-04-24 10:21:42

标签: django

下面的说明路径没有帮助自定义管理界面

IN settings.py

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "templates"),
]

IN根 模板是文件夹名称 在那里,我创建了一个目录admin,并在其中创建了base.html

{% extends "admin/base.html" %}

{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}

{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
{% endblock %}

{% block nav-global %}{% endblock %}

任何人都可以建议。现在该怎么办

1 个答案:

答案 0 :(得分:0)

通过创建<PROJECT_ROOT>/templates/admin/base.html,您将覆盖Django管理应用base.html。但是在您的模板中,您扩展了相同的模板。由于它将创建一个循环,因此您将遇到一些错误。

取代admin/base.html,而不要覆盖admin/base_site.html。我相信这就是您想要的。就您而言,只需将模板文件从base.html重命名为base_site.html并尝试一下。如果遇到任何异常,请编辑问题并添加完整的堆栈跟踪。

更新2

收到您的评论后,我发现您正在将模板目录设置为STATICFILES_DIRS。错了您需要在TEMPLATES设置中指定它们,如下所示:

这是我的一个项目

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR, 'templates'),
        ],
        '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',
            ],
        },
    },
]

据我所知,您的模板文件夹中有静态文件。这是不对的。您应该将它们放在单独的文件夹中,然后像以前一样将它们传递到STATICFILES_DIRS内。然后您的静态文件将对您可用。

建议 前面的评论将解决您的问题。但我想提出其他建议。 Django具有模板和静态文件发现与覆盖机制。 在此解决方案中,您的静态文件和模板不与任何应用程序绑定。 但是,有时将它们绑起来是很好的。 因此,如果创建一个应用程序,然后在该应用程序内创建模板和静态文件夹,然后将模板和静态文件放在这些目录中,则结果将相同。 在这种情况下,您需要将应用名称添加到INSTALLED_APPS