这不会太难做到。
一个粗略的大纲,您需要使用自己的 AdminSite,并覆盖 index 方法(这是呈现主视图的方法)。像这样的:
from django.contrib import admin
class MyAdminSite(admin.AdminSite):
index_template = "path/to/my_template.html"
def index(self, request, extra_context=None):
# do whatever extra logic you need to do here
extra_context = ... # this will be added to the template context
return super().index(request, extra_context=extra_context)
请注意,我还添加了一个新的 index_template。这就是 index 方法将用来呈现它的响应。所以我们最好设置它。我们将扩展旧的 index.html 并在我们想要的位中添加我们的额外代码。
{% extends "admin/index.html" %}
{% block sidebar %}
{{ block.super }} // this just includes everything that was there before
// add your extra html here
{% endblock %}
这应该可以解决问题:) 所以,不。你真的不必去搞任何你不应该做的事情。
您需要将MyAdminSite 类注册为您的新管理员。 django docs 中有明确的说明。
但是...始终值得考虑 django-admin 文档的前几行:
管理员推荐的使用仅限于组织的内部管理工具。它不适用于构建整个前端。
管理员有许多用于自定义的钩子,但请注意不要尝试专门使用这些钩子。如果您需要提供一个更加以流程为中心的接口来抽象出数据库表和字段的实现细节,那么可能是时候编写自己的视图了。
我会更进一步说它可能只应该由其他开发人员使用。其他人很容易引起大问题。因此,根据您要在此处添加这些通知的原因,这可能是一件好事,也可能不是一件好事。
我希望这会有所帮助:)