这不会太难做到。
粗略的大纲,您需要使用自己的 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 文档的前几行:
管理员推荐的使用仅限于组织的内部管理工具。它不是为了构建你的整个前端。
管理员有许多用于自定义的钩子,但请注意不要尝试专门使用这些钩子。如果您需要提供一个更加以流程为中心的接口来抽象出数据库表和字段的实现细节,那么可能是时候编写自己的视图了。
我会更进一步说它可能只应该由其他开发人员使用。其他人很容易引起大问题。因此,根据您要在此处添加这些通知的原因,这可能是也可能不是一件好事。
我希望这有帮助 :)