首页 > 如何对django的admin.site工具指定App使用?

如何对django的admin.site工具指定App使用?

安装手册或者文档中一般都是这么配置的
在 ROOT_URLCONF 文件 urls.py中中

from django.contrib import admin
admin.autodiscover()#貌似在1.8版本是默认开启的?

urlpatterns += [url((r'^admin/', include(admin.site.urls)))]

如果我的 project 总有 A,B,C 等App

在我的 INSTALLED_APPS 中有一些App都自带 admin.py 进行管理,例如自带的Auth模块和一些第三方模块。怎么在 admin.site 取消注册这些App,当然了直接在admin.py源代码的注释掉admin.site.register也行,可是这样不太好也不太方便。我不清楚如何指定App在admin.site中进行注册,而不是autodiscover


你说的是admin site?

这玩意儿你不注册过去在后台也能用?(admin.site.register) 这和url配置有啥关系呢- -


这确实是个很简单的问题,可能是看文档脑袋看糊了。

文档中一般提到的都是这么配置,修改urls.py

from django.conf.urls import patterns, url, include
# ......
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    (r'^admin/', include(admin.site.urls)),
    # ......
)

admin.autodiscover()这个函数会将你在djangoINSTALLED_APPS中有admin.py文件都尝试注册进admin.site中去。

你可以不用admin.autodiscover(),单独为A应用注册一个管理页面。

from A.admin import admin as Aadmin
from B.admin import admin as Badmin
urlpatterns = patterns('',
    (r'^A/admin/', include(Aadmin.site.urls)),
    (r'^A/admin/', include(Badmin.site.urls)),
    # ......
)

参考Why isn't admin.autodiscover() called automatically in Django when using the admin, why was it designed to be called explicitly?

当你的INSTALLED_APPS中有一些不需要在admin页面中进行管理的,例如,你有A,B,C三个APP,只想让C不在管理页面中,A和B都在管理页面中进行注册。

from A.admin import admin
from B.admin import admin
urlpatterns = patterns('',
    (r'^admin/', include(admin.site.urls)),
    # ......
)

从不同的包引入相同名字的对象,貌似也没出什么错。。

【热门文章】
【热门文章】