假設(shè)我們要設(shè)計(jì)一個(gè)新聞網(wǎng)站,我們需要編寫展示給用戶的頁面,網(wǎng)頁上展示的新聞信息是從哪里來的呢?是從數(shù)據(jù)庫中查找到新聞的信息,然后把它展示在頁面上。但是我們的網(wǎng)站上的新聞每天都要更新,這就意味著對(duì)數(shù)據(jù)庫的增、刪、改、查操作,那么我們需要每天寫sql語句操作數(shù)據(jù)庫嗎? 如果這樣的話,是不是非常繁瑣,所以我們可以設(shè)計(jì)一個(gè)頁面,通過對(duì)這個(gè)頁面的操作來實(shí)現(xiàn)對(duì)新聞數(shù)據(jù)庫的增刪改查操作。那么問題來了,老板說我們需要在建立一個(gè)新網(wǎng)站,是不是還要設(shè)計(jì)一個(gè)頁面來實(shí)現(xiàn)對(duì)新網(wǎng)站數(shù)據(jù)庫的增刪改查操作,但是這樣的頁面具有一個(gè)很大的重復(fù)性,那有沒有一種方法能夠讓我們很快的生成管理數(shù)據(jù)庫表的頁面呢?有,那就是我們接下來要給大家講的Django的后臺(tái)管理。Django能夠根據(jù)定義的模型類自動(dòng)地生成管理頁面。
使用Django的管理模塊,需要按照如下步驟操作:
管理界面本地化
創(chuàng)建管理員
注冊(cè)模型類
自定義管理頁面
1 管理界面本地化
在settings.py中設(shè)置語言和時(shí)區(qū)
LANGUAGE_CODE ='zh-hans'# 使用中國語言TIME_ZONE ='Asia/Shanghai'# 使用中國上海時(shí)間
2 創(chuàng)建超級(jí)管理員
創(chuàng)建管理員的命令如下,按提示輸入用戶名、郵箱、密碼。
python manage.py createsuperuser

打開瀏覽器,在地址欄中輸入如下地址后回車。
http://127.0.0.1:8000/admin/
輸入前面創(chuàng)建的用戶名、密碼完成登錄。

登錄成功后界面如下,但是并沒有我們自己應(yīng)用模型的入口,接下來進(jìn)行第三步操作。

如果想要修改密碼可以執(zhí)行
python manage.py changepassword 用戶名
3 App應(yīng)用配置
在每個(gè)應(yīng)用目錄中都包含了apps.py文件,用于保存該應(yīng)用的相關(guān)信息。
在創(chuàng)建應(yīng)用時(shí),Django會(huì)向apps.py文件中寫入一個(gè)該應(yīng)用的配置類,如
fromdjango.appsimportAppConfigclassBooktestConfig(AppConfig):name ='booktest'
我們將此類添加到工程settings.py中的INSTALLED_APPS列表中,表明注冊(cè)安裝具備此配置屬性的應(yīng)用。
AppConfig.name?屬性表示這個(gè)配置類是加載到哪個(gè)應(yīng)用的,每個(gè)配置類必須包含此屬性,默認(rèn)自動(dòng)生成。
AppConfig.verbose_name?屬性用于設(shè)置該應(yīng)用的直觀可讀的名字,此名字在Django提供的Admin管理站點(diǎn)中會(huì)顯示,如
fromdjango.appsimportAppConfigclassBooktestConfig(AppConfig):name ='booktest'verbose_name ='圖書管理'
4 注冊(cè)模型類
登錄后臺(tái)管理后,默認(rèn)沒有我們創(chuàng)建的應(yīng)用中定義的模型類,需要在自己應(yīng)用中的admin.py文件中注冊(cè),才可以在后臺(tái)管理中看到,并進(jìn)行增刪改查操作。
打開booktest/admin.py文件,編寫如下代碼:
fromdjango.contribimportadminfrombooktest.modelsimportBookInfo,HeroInfoadmin.site.register(BookInfo)admin.site.register(HeroInfo)
到瀏覽器中刷新頁面,可以看到模型類BookInfo和HeroInfo的管理了。

點(diǎn)擊類名稱"BookInfo"(圖書)可以進(jìn)入列表頁,默認(rèn)只有一列。

在列表頁中點(diǎn)擊"增加"可以進(jìn)入增加頁,Django會(huì)根據(jù)模型類的不同,生成不同的表單控件,按提示填寫表單內(nèi)容后點(diǎn)擊"保存",完成數(shù)據(jù)創(chuàng)建,創(chuàng)建成功后返回列表頁。

在列表頁中點(diǎn)擊某行的第一列可以進(jìn)入修改頁。

按照提示進(jìn)行內(nèi)容的修改,修改成功后進(jìn)入列表頁。在修改頁點(diǎn)擊“刪除”可以刪除一項(xiàng)。

刪除:在列表頁勾選想要?jiǎng)h除的復(fù)選框,可以刪除多項(xiàng)。

點(diǎn)擊執(zhí)行后進(jìn)入確認(rèn)頁面,刪除后回來列表頁面。
5 定義與使用Admin管理類
Django提供的Admin站點(diǎn)的展示效果可以通過自定義ModelAdmin類來進(jìn)行控制。
定義管理類需要繼承自admin.ModelAdmin類,如下
fromdjango.contribimportadminclassBookInfoAdmin(admin.ModelAdmin):pass
使用管理類有兩種方式:
注冊(cè)參數(shù)
admin.site.register(BookInfo,BookInfoAdmin)
裝飾器
@admin.register(BookInfo)classBookInfoAdmin(admin.ModelAdmin):pass