我使用的是django 1.4和Python 2.7。
我只是有一个简单的要求,我必须在django管理应用程序中添加新的URL。我知道如何添加适用于自定义应用的网址,但我无法弄清楚如何添加属于管理员应用的网址。请指导我完成这个。
基本上,完整的网址应该是admin/my_url
。
更新
我想要一种方法,然后我可以使用admin来反向映射URL。
答案 0 :(得分:5)
+1表示Jingo对原始问题的回答。随着您对答案的澄清评论: 这样的网址不“独立于应用”,它是应用“admin”的网址。
通过覆盖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被注册)。因此,您可以将AdminSite子类化为您自己的MyAdminSite并在那里重新定义get_urls():
from django.contrib.admin import AdminSite
class MyAdminSite(AdminSite):
def get_urls():
...
...
my_admin_site = MyAdminSite()
...
my_admin_site.register(MyModel, MyModelAdmin)
请确保您现在在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在“第一次”进口之后......答案 1 :(得分:1)
只需在根urls.py中的admin映射之前放置所需的url映射。请求的第一个匹配将被采用,因为django将url映射从上到下。请记住,您不使用管理员通常需要或提供的URL,因为它永远不会与前面的自定义映射匹配。 HTH!