2012-07-02 13 views
6

私はdjango 1.4とPython 2.7を使用しています。アプリから独立したdjango管理者の新しいURL

ちょうど私がdjango管理アプリケーションに新しいURLを追加する必要があるという単純な要件があります。私はカスタムアプリケーション用のURLを追加する方法を知っていますが、管理用アプリケーションのURLを追加する方法を理解できません。これで私を導いてください。

基本的に完全なURLはadmin/my_urlのようになります。

UPDATE

私は、同様の管理を使用してURLをマッピング逆にすることができた後に方法をしたいです。

答えて

5

+1元の質問に対するJingoの回答。あなたの答えを念頭に置いて解説してください: このようなURLはではなく、で、「アプリとは関係ない」、それはアプリ「admin」のURLです。 https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-views-to-admin-sites

EDIT:

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

は、デフォルトでは、adminサイトで "" 管理者adminサイトへのURLを追加する

get_urls()をオーバーライドすることによって、ModelAdminのに似ていますサイトは "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) 

をあなたの代わりに今urls.pyでmy_admin_siteを使用していることを確認してください:(get_urlsの実際の内容について https://docs.djangoproject.com/en/dev/ref/contrib/admin/#hooking-adminsite-instances-into-your-urlconf

)、 https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls (もちろん、MyAdminSiteのsuper()を呼び出すを参照してください)。また、そこに記載されている便利な "admin_view"ラッパーにも注意してください。

PS:理論的には、get_urls()を定義してから、デフォルトのadminサイトをmonkeypatchしてget_urls()を使用するようにすることもできますが、実際に動作するかどうかはわかりません。 "最初の"インポートの直後のMonkeypatch ...

+0

誤った言葉をおかけして申し訳ありません。私は実際にこれが欲しかった。しかし、これを行うためにどのようなステップが関与しているかについての簡単な説明をお願いしますか?またはこれが行われた例? –

1

あなたのルートurls.pyにadminマッピングの前にあなたの望むURLマッピングを入れてください。 djangoは上から下にurlマッピングを行うので、リクエストの最初の一致が取られます。管理者が通常必要とする、または提供するURLを使用しないことを覚えておいてください。これは、その前のカスタムマッピングと決して一致しないためです。 HTH!

+0

それは可能な解決策です。しかし、URLを管理URLとして登録しません(モデルURLの場合のように)。これは私のサイトの別のURLで、Django自身のURLの前に定義して提供しています。私はその後、管理者を使ってURLを逆の地図にすることができる方法が欲しい。 –

関連する問題