如何修改Django Admin面板中操作区域的标题?
修改Django Admin面板操作区域标题的几种方案
方案一:自定义AdminSite全局修改
适合全站统一修改操作区域标题的场景:
- 在项目中新建(或修改)
admin_site.py文件:
from django.contrib.admin import AdminSite from django.utils.translation import gettext_lazy as _ class CustomAdminSite(AdminSite): # 替换这里的文本为你想要的标题 action_header = _("自定义操作标题") # 实例化自定义站点 custom_admin_site = CustomAdminSite(name='custom_admin')
- 在各App的
admin.py中,用自定义站点注册模型:
from .models import Article from ..admin_site import custom_admin_site @custom_admin_site.register(Article) class ArticleAdmin(admin.ModelAdmin): # 你的模型Admin配置项 list_display = ('title', 'publish_date')
- 修改项目
urls.py,替换默认的admin路由:
from django.urls import path from .admin_site import custom_admin_site urlpatterns = [ path('admin/', custom_admin_site.urls), ]
方案二:覆盖Admin模板灵活定制
适合需要针对特定页面修改,或做更复杂样式调整的场景:
- 在项目
templates目录下创建admin/change_list.html文件:
{% extends "admin/change_list.html" %} {% block actions %} {% if actions %} <div class="actions"> <!-- 替换这里的文本为自定义标题 --> <label>{% trans '批量操作' %}:</label> {{ actions }} </div> {% endif %} {% endblock %}
- 确保
settings.py的模板配置中,自定义模板目录优先级正确:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'], # 自定义模板目录放在前面 'APP_DIRS': True, # 其他配置... }, ]
方案三:单个ModelAdmin单独修改
只需给某一个模型的Admin页面改标题时用这个方法:
from django.contrib import admin from django.utils.translation import gettext_lazy as _ from .models import Comment class CommentAdmin(admin.ModelAdmin): def changelist_view(self, request, extra_context=None): extra_context = extra_context or {} # 传递自定义标题到模板 extra_context['custom_action_title'] = _("评论批量操作") return super().changelist_view(request, extra_context) admin.site.register(Comment, CommentAdmin)
然后修改admin/change_list.html模板,使用传递的变量:
{% extends "admin/change_list.html" %} {% block actions %} {% if actions %} <div class="actions"> <label>{{ custom_action_title|default:_('操作') }}:</label> {{ actions }} </div> {% endif %} {% endblock %}
内容的提问来源于stack exchange,提问作者Darwin
相关产品推荐
相关产品推荐

