向django管理员添加新页面。
django-adminplus的Python项目详细描述
adminplus的目标是尽可能小的扩展到优秀的 django管理组件,允许您添加未绑定到 模型。
外面有包裹,像Nexus 以及django-admin-tools那个 替换整个管理员。Nexus支持添加全新的“模块”(即 django model admin是一个默认模块),但似乎有很多锅炉 用车牌号来做。据我所知,django管理工具不支持 添加自定义页。
adminplus只允许您添加简单的自定义视图(它们可以是 就像你喜欢的那样复杂!)而不是到处乱搞劫持网址, 在管理索引中提供指向它们的链接。
安装adminplus
使用pip从PyPI安装:
pip install django-adminplus
或者从GitHub获得adminplus 使用pip:
pip install -e git://github.com/jsocol/django-adminplus#egg=django-adminplus
并将adminplus添加到已安装的应用程序中:
INSTALLED_APPS = ( # ... 'adminplus', # ... )
要在Django项目中使用AdminPlus,需要替换 django.contrib.admin.site,它是 django.contrib.admin.sites.AdminSite。我建议在^{tt4}中执行此操作$ 在调用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)), # ... ]
如果您使用的是django 1.7,那么还应该将django.contrib.admin替换为 django.contrib.admin.apps.SimpleAdminConfig按顺序 要禁用自动发现,请执行以下操作:
INSTALLED_APPS = ( # ... 'django.contrib.admin.apps.SimpleAdminConfig', # instead of 'django.contrib.admin' # ... )
恭喜你!你现在正在使用adminplus。
使用adminplus
既然已经安装了adminplus,就可以使用它了。adminplus是 100%兼容内置的管理模块,所以如果你一直在使用它, 你不应该改变任何事情。
AdminPlus提供了一个新函数admin.site.register_view来附加 管理员的任意视图:
# 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访问,并且 在管理索引的custom views部分链接到它。
您还可以使用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()等。
visible:一个布尔值或可调用的返回值,它定义 自定义视图在管理仪表板中可见。
所有注册的视图都包装在admin.site.admin_view中。
注意
具有与自动发现的URL匹配的URL的视图(例如,通过 modeladmins)将覆盖自动发现的url。