如何对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
django-admin python web django
Answers
这确实是个很简单的问题,可能是看文档脑袋看糊了。
文档中一般提到的都是这么配置,修改
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()
这个函数会将你在django
INSTALLED_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)),
# ......
)
当你的
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)),
# ......
)
从不同的包引入相同名字的对象,貌似也没出什么错。。