7

私はdjango 1.4とPython 2.7を使用しています。

django 管理アプリに新しい URL を追加する必要があるという単純な要件があります。カスタム アプリの URL を追加する方法は知っていますが、管理アプリの URL を追加する方法がわかりません。これを案内してください。

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

アップデート

その後、admin を使用して URL を逆マップする方法が必要です。

4

2 に答える 2

6

元の質問に対するジンゴの回答に+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() を使用することもできますが、それが実際に機能するかどうかはわかりません。おそらく、その直後にモンキー パッチを適用する必要があります。 「最初の」インポート...

于 2012-07-02T06:34:08.480 に答える
3

ルートurls.pyの管理者マッピングの前に目的のURLマッピングを配置するだけです。djangoはURLマッピングを上から下に移動するため、リクエストの最初の一致が取得されます。管理者が通常必要とする、または提供するURLは使用しないことに注意してください。これは、その前にあるカスタムマッピングとは一致しないためです。HTH!

于 2012-07-02T06:02:00.927 に答える