私はdjango 1.4とPython 2.7を使用しています。
django 管理アプリに新しい URL を追加する必要があるという単純な要件があります。カスタム アプリの URL を追加する方法は知っていますが、管理アプリの URL を追加する方法がわかりません。これを案内してください。
基本的に、完全な URL は次のようになりますadmin/my_url
。
アップデート
その後、admin を使用して URL を逆マップする方法が必要です。
私はdjango 1.4とPython 2.7を使用しています。
django 管理アプリに新しい URL を追加する必要があるという単純な要件があります。カスタム アプリの URL を追加する方法は知っていますが、管理アプリの URL を追加する方法がわかりません。これを案内してください。
基本的に、完全な URL は次のようになりますadmin/my_url
。
アップデート
その後、admin を使用して URL を逆マップする方法が必要です。
元の質問に対するジンゴの回答に+1。回答に対する明確なコメントを念頭に置いてください。このような URL は「アプリとは無関係」ではなく、アプリ「管理者」の URL です。
管理サイトへの URL の追加は、get_urls() をオーバーライドすることにより、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
は管理サイトです。デフォルトでは、「the」管理サイトは「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 を使用してください: 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() を定義してから、デフォルトの管理サイトにモンキー パッチを適用して get_urls() を使用することもできますが、それが実際に機能するかどうかはわかりません。おそらく、その直後にモンキー パッチを適用する必要があります。 「最初の」インポート...
ルートurls.pyの管理者マッピングの前に目的のURLマッピングを配置するだけです。djangoはURLマッピングを上から下に移動するため、リクエストの最初の一致が取得されます。管理者が通常必要とする、または提供するURLは使用しないことに注意してください。これは、その前にあるカスタムマッピングとは一致しないためです。HTH!