python - 如何对django的admin.site工具指定App使用?
大家讲道理
大家讲道理 2017-04-17 15:56:55
[Python讨论组]

安装手册或者文档中一般都是这么配置的
在 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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
巴扎黑

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

文档中一般提到的都是这么配置,修改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)),
    # ......
)

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

迷茫

你说的是admin site?

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号