跳转到主要内容

向Django管理后台添加新页面。

项目描述

AdminPlus 的目标是成为最小的扩展,让Django管理组件更加出色,允许添加不与模型绑定的管理视图。

市面上有一些包,如 Nexusdjango-admin-tools,可以替换整个管理后台。Nexus支持添加全新的“模块”(Django模型管理器是一个默认模块),但似乎需要编写很多样板代码。据我所知,django-admin-tools不支持添加自定义页面。

AdminPlus所做的只是允许您添加简单的自定义视图(好吧,它们可以像您喜欢的那样复杂!)而无需篡改URL,并在管理首页中直接提供它们的链接。

https://github.com/jsocol/django-adminplus/actions/workflows/ci.yml/badge.svg?branch=main

安装AdminPlus

使用pip从PyPI安装

pip install django-adminplus

或使用pip从GitHub获取AdminPlus

pip install -e git://github.com/jsocol/django-adminplus#egg=django-adminplus

并将 adminplus 添加到您的已安装应用中,并将 django.contrib.admin 替换为 django.contrib.admin.apps.SimpleAdminConfig

INSTALLED_APPS = (
    'django.contrib.admin.apps.SimpleAdminConfig',
    # ...
    'adminplus',
    # ...
)

要在您的Django项目中使用AdminPlus,您需要替换django.contrib.admin.site,它是一个django.contrib.admin.sites.AdminSite的实例。建议在urls.py中调用admin.autodiscover()之前进行此操作。

# urls.py
from django.contrib import admin
from adminplus.sites import AdminSitePlus

admin.site = AdminSitePlus()
admin.autodiscover()

urlpatterns = [
    # ...
    # Include the admin URL conf as normal.
    (r'^admin', include(admin.site.urls)),
    # ...
]

恭喜!您现在正在使用AdminPlus。

使用AdminPlus

现在您已安装了AdminPlus,您可能想要使用它。AdminPlus与内置的admin模块100%兼容,因此如果您一直在使用它,您不需要进行任何更改。

AdminPlus提供了一个新功能,admin.site.register_view,可以将任意视图附加到admin。

# someapp/admin.py
# Assuming you've replaced django.contrib.admin.site as above.
from django.contrib import admin

def my_view(request, *args, **kwargs):
    pass
admin.site.register_view('somepath', view=my_view)

# And of course, this still works:
from someapp.models import MyModel
admin.site.register(MyModel)

现在my_view将在admin/somepath处可用,并在admin索引的自定义视图部分中有一个链接到它。

您也可以将register_view用作装饰器

@admin.site.register_view('somepath')
def my_view(request):
    pass

register_view接受一些可选参数

  • name:在自定义视图列表中显示的友好名称。例如

    def my_view(request):
        """Does something fancy!"""
    admin.site.register_view('somepath', 'My Fancy Admin View!', view=my_view)
  • urlname:给urlpattern命名,以便可以通过redirect()reverse()等调用。视图将添加到admin命名空间中,因此foo的urlname将使用reverse("admin:foo")进行反转。

  • visible:一个布尔值或返回布尔值的可调用对象,它定义了自定义视图是否在admin仪表板中可见。

所有注册的视图都被封装在admin.site.admin_view中。

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面