django admin上的新URL独立于应用程序

San*_*wal 7 django django-urls django-admin python-2.7 django-1.4

我正在使用django 1.4和Python 2.7.

我只是有一个简单的要求,我必须在django管理应用程序中添加一个新的URL.我知道如何添加适用于自定义应用的网址,但我无法弄清楚如何添加属于管理员应用的网址.请指导我完成这个.

基本上,完整的URL应该是这样的admin/my_url.

UPDATE

我想要一种方法,然后我可以使用admin反向映射URL.

Dan*_*air 6

为Jingo对原始问题的回答+1.通过您对答案的澄清评论:这样的URL 不是 "独立于应用程序",它是应用程序"admin"的URL.

通过覆盖get_urls(),向管理站点添加URL类似于ModelAdmin:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-views-to-admin-sites

编辑:

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.AdminSite

是一个管理站点,默认情况下,"管理站点"被实例化为"django.contrib.admin.site"(然后例如你的ModelAdmin被注册).因此,您可以为自己的MyAdminSite继承AdminSite并在那里重新定义get_urls():

from django.contrib.admin import AdminSite

class MyAdminSite(AdminSite):
    def get_urls():
        ...


...
my_admin_site = MyAdminSite()
...
my_admin_site.register(MyModel, MyModelAdmin)
Run Code Online (Sandbox Code Playgroud)

请确保现在使用urls.py中的my_admin_site:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#hooking-adminsite-instances-into-your-urlconf

关于get_urls()的实际内容,请参阅 https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls (当然调用MyAdminSite的super()) .另请注意那里提到的方便的"admin_view"包装器.

PS:从理论上讲,你也可以定义get_urls()然后monkeypatch默认的管理站点,以便它使用你的get_urls(),但我不知道这是否真的有用 - 你可能不得不在它之后做monkeypatch "第一次"进口......