1. 程式人生 > >Django_study_day06:後臺管理

Django_study_day06:後臺管理

後臺管理

假設,我們接到一個設計新聞網站的專案,我們需要編寫展示給使用者的頁面,但是網頁上展示的新聞資訊都是從哪裡來的呢?回答:是從資料庫中查詢使用者所需檢視的新聞資訊,然後把它展示在頁面上。但是新聞網站上的新聞每天甚至每時每刻都要更新,這就意味著需要頻繁的操作資料庫的增、刪、改、查。難道我們每天都需要寫sql語句操作資料庫嗎? 如果這樣的話,是不是非常的繁瑣,所以我們可以設計一個頁面,通過對這個頁面的操作來實現對資料庫的增刪改查操作
那麼問題在於,boss說我們需要建立一個網站,這個網站要通過頁面來實現對資料庫的操作,但是這樣操作資料庫,有很大的重複性,那有沒有一種方法能夠讓我們很快的生成管理資料庫表的頁面呢?有,那就是我們接下來要給大家講的Django的後臺管理。Django能夠根據定義的模型類自動地生成管理頁面

使用Django的管理模組,需要按照如下步驟操作:

1.管理介面本地化
本地化是指將語言時間等都設定為本地語言和時間
中國大陸地區使用簡體中文,時區使用亞洲/上海時區,注意這裡不使用北京時區表示(因為沒有北京時間)

我們之前已經修改過,但是在這裡我們在複習一下

開啟test1/settings.py檔案,找到語言編碼、時區的設定項,將內容改為如下:

LANGUAGE_CODE = 'zh-hans' #使用中國語言
TIME_ZONE = 'Asia/Shanghai' #使用中國上海時間

2.建立管理員

建立管理員的命令如下,按提示輸入使用者名稱、郵箱、密碼

python manage.py createsuperuser

接下來啟動伺服器

python manage.py runserver

開啟瀏覽器,在位址列中輸入如下地址後回車

http://127.0.0.1:8000/admin/

輸入前面建立的使用者名稱、密碼完成登入

在這裡插入圖片描述

登入成功後介面如下,但是並沒有圖書、英雄的管理入口,接下來進行第三步操作

在這裡插入圖片描述

3.註冊模型類

登入後臺管理頁面之後,系統預設我們沒有建立應用中定義的模型類,所以我們需要在admin.py中註冊模型類

開啟booktest/admin.py檔案,編寫如下程式碼:

from django.contrib import admin
from booktest.models import BookInfo,HeroInfo

admin.site.register(BookInfo)
admin.site.register(HeroInfo)

到瀏覽器中重新整理頁面,可以看到模型類BookInfo和HeroInfo的管理了

在這裡插入圖片描述

點選類名稱"BookInfo"可以進入列表頁,預設只有一列

在這裡插入圖片描述

點選增加可以增加資訊

在這裡插入圖片描述

點選具體的某行可以進入該行的修改操作頁面

按照提示進行內容的修改,修改成功後進入列表頁。在修改頁點選“刪除”可以刪除一項

刪除:在列表頁勾選想要刪除的複選框,可以刪除多項

點選執行後進入確認頁面,刪除後回來列表頁面

4.自定義管理頁面

在列表頁只顯示出了BookInfo object,物件的其它屬性並沒有列出來,檢視非常不方便。 Django提供了自定義管理頁面的功能,比如列表頁要顯示哪些值。

開啟booktest/admin.py檔案,自定義類,繼承自admin.ModelAdmin類。

class BookInfoAdmin(admin.ModelAdmin):
    list_display = ['id', 'btitle', 'bpub_date'] # 表示要顯示哪些屬性

修改模型類BookInfo的註冊程式碼如下

admin.site.register(BookInfo, BookInfoAdmin)

重新整理BookInfo的列表頁,所有屬性都顯示出來了

最終booktest/admin.py檔案程式碼如下

from django.contrib import admin
from booktest.models import BookInfo,HeroInfo

class BookInfoAdmin(admin.ModelAdmin):
	"""設定後臺管理頁面中圖書資訊表顯示的內容"""
    list_display = ['id', 'btitle', 'bpub_date'] # 在頁面上顯示的內容為'id', 'btitle', 'bpub_date'
class HeroInfoAdmin(admin.ModelAdmin):
   	"""設定後臺管理頁面中英雄資訊表顯示的內容"""
    list_display = ['id', 'hname','hgender','hcomment'] # 在頁面上顯示的內容為'id', 'hname','hgender','hcomment'

# 在最後寫入下兩行的程式碼,不然前面寫的自定義管理內容將無法在頁面中顯示
admin.site.register(BookInfo,BookInfoAdmin)
admin.site.register(HeroInfo,HeroInfoAdmin)