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

 流浪的牛仔2011Ting_883 发布于 2022-10-31 03:35

安装手册或者文档中一般都是这么配置的
在 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 个回答
  • 你说的是admin site?

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

    2022-10-31 22:19 回答
  • 这确实是个很简单的问题,可能是看文档脑袋看糊了。

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

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

    2022-10-31 22:19 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有