後臺管理

後臺管理

假設咱們要設計一個新聞網站,咱們須要編寫展現給用戶的頁面,網頁上展現的新聞信息是從哪裏來的呢?是從數據庫中查找到新聞的信息,而後把它展現在頁面上。可是咱們的網站上的新聞天天都要更新,這就意味着對數據庫的增、刪、改、查操做,那麼咱們須要天天寫sql語句操做數據庫嗎? 若是這樣的話,是否是很是繁瑣,因此咱們能夠設計一個頁面,經過對這個頁面的操做來實現對新聞數據庫的增刪改查操做。那麼問題來了,老闆說咱們須要在創建一個新網站,是否是還要設計一個頁面來實現對新網站數據庫的增刪改查操做,可是這樣的頁面具備一個很大的重複性,那有沒有一種方法可以讓咱們很快的生成管理數據庫表的頁面呢?有,那就是咱們接下來要給你們講的Django的後臺管理。Django可以根據定義的模型類自動地生成管理頁面。python

使用Django的管理模塊,須要按照以下步驟操做:sql

  • 1.管理界面本地化
  • 2.建立管理員
  • 3.註冊模型類
  • 4.自定義管理頁面

1.管理界面本地化

本地化是將顯示的語言、時間等使用本地的習慣,這裏的本地化就是進行中國化,中國大陸地區使用簡體中文,時區使用亞洲/上海時區,注意這裏不使用北京時區表示。數據庫

打開test1/settings.py文件,找到語言編碼、時區的設置項,將內容改成以下:django

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文件中註冊,才能夠在後臺管理中看到,並進行增刪改查操做。code

打開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"能夠進入列表頁,默認只有一列。

在列表頁中點擊"增長"能夠進入增長頁,Django會根據模型類的不一樣,生成不一樣的表單控件,按提示填寫表單內容後點擊"保存",完成數據建立,建立成功後返回列表頁。

在列表頁中點擊某行的第一列能夠進入修改頁。

按照提示進行內容的修改,修改爲功後進入列表頁。在修改頁點擊「刪除」能夠刪除一項。

刪除:在列表頁勾選想要刪除的複選框,能夠刪除多項。

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

數據都刪除了,接下來手動造一些數據出來。

4.自定義管理頁面

在列表頁只顯示出了BookInfo object,對象的其它屬性並無列出來,查看很是不方便。 Django提供了自定義管理頁面的功能,好比列表頁要顯示哪些值。

打開booktest/admin.py文件,自定義類,繼承自admin.ModelAdmin類。

  • 屬性list_display表示要顯示哪些屬性
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']
class HeroInfoAdmin(admin.ModelAdmin):
    list_display = ['id', 'hname','hgender','hcomment']

admin.site.register(BookInfo,BookInfoAdmin)
admin.site.register(HeroInfo,HeroInfoAdmin)
相關文章
相關標籤/搜索