2012-07-02 27 views
6

我正在使用django 1.4和Python 2.7。獨立於應用程序的django管理器上的新網址

我只是有一個簡單的要求,我必須添加一個新的URL到Django管理應用程序。我知道如何添加用於自定義應用程序的URL,但無法弄清楚如何添加屬於管理應用程序的URL。請通過這個指導我。

基本上完整的URL應該是類似admin/my_url

UPDATE

我想辦法後,我可以和反向映射使用管理的URL。

回答

5

+1對於Jingo的回答您的原始問題。有了您的澄清評論的答案: 這樣的URL是而不是「獨立於應用程序」,它是應用程序「admin」的URL。

將URL添加到管理網站類似的ModelAdmin,通過重寫get_urls(): 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在「第一次」進口之後...

+0

我很抱歉錯誤地使用了單詞。我其實想要這個。但是,請您簡單介紹一下執行此操作的步驟?或者一個已經完成的例子? –

1

只需在您的根urls.py中的管理員映射之前放置所需的URL映射。請求的第一個匹配將被採用,因爲django從上到下進行url映射。請記住,您不使用管理員通常需要或提供的url,因爲這將永遠不會與前面的自定義映射相匹配。 HTH!

+0

這是一個可能的解決方案。但是,它不會將URL註冊爲管理員URL(就像模型URL一樣)。這是我在Django自己的URL之前定義並提供的網站的另一個網址。我想要一種方式,之後我可以使用管理員反向映射URL。 –