一 前言python
在第(二)節介紹了模型Book的設計,實質就是在models.py裏寫了一個Book類,定義了變量和元數據,也就是設計數據庫裏對應的表應該長什麼樣子。就如前面所說,你能夠將定義的模型類理解成數據庫的一張表,類的實例對象理解成表中一行數據,類中的變量對應表中字段。Python奉行代碼優先的理念,經過定義模型類,實現python代碼與數據庫操做的解耦,即便Python開發者不會數據庫SQL,也能輕鬆完成數據庫操做。git
模型類定義完後,如何實如今數據庫生成對應的表呢?如何經過Django後臺管理模型呢?這就是本節要回答的問題。數據庫
二 模型遷移django
遷移(migration),是一個將models.py定義的模型類映射到數據庫並生成數據表的動做,主要涉及兩個命令:瀏覽器
python manage.py makemigrations python manage.py migrate
命令說明:
1. 該命令的執行位置是在manage.py文件的同級目錄;
2. 命令順序執行,即先執行makemigrations,完成後,再執行migrate;
3. Django默認使用SQLlite,不須要作任何配置,但若是使用的其餘數據庫,須要預先在項目的settings.py配置、指定數據庫;
可能你會疑惑,遷移爲何要搞成兩步呀?
緣由是這樣的:
makemigrations命令,帶着make,該動做只是將模型改動生成到文件,默認是在項目的migrations目錄下,注意此時只是生成了一個可讀可編輯的文本文件,並無對數據庫進行改動,這樣作的目的是,便於經過版本控制系統(如git、svn)記錄、同步你對模型的修改,畢竟版本控制系統是沒法和數據庫打交道的。有了中間記錄,就能夠放心的使用migrate將改動同步到數據庫了。服務器
三 經過Admin後臺管理模型ide
Django的省心之處就是它會基於項目模型建立一套簡易的後臺管理系統,經過該系統能夠方便的對模型進行增刪改查,雖然也被不少人詬病,Django過重、集成度太強,但既然有現成的、省事兒的,爲啥還要本身造輪子呢?!
進入Admin後臺管理的步驟以下:
1. 首次登陸,建立一個admin站點用戶,命令以下:svn
python manage.py createsuperuser
根據提示輸入用戶名、郵箱地址、密碼便可。
2. 啓動服務器,命令以下:佈局
python manage.py runserver 127.0.0.1:8000
IP:端口根據實際修改,啓動後,瀏覽器訪問http://127.0.0.1:8000/admin/,就會看到管理後臺界面,如圖:
spa
上圖中管理後臺登陸界面的站點名字已經被我從默認的Django Administration改爲圖書借閱管理系統了,後面會介紹如何改。
3. 在amdin.py中使用admin.site.register()註冊模型
from django.contrib import admin from django.contrib.auth.models import Group,User as AdminUser from .models import Book,User,ValidUser # Register your models here. admin.site.register(Book)
注意:
只有註冊的模型纔會出如今admin後臺管理系統。
4. 再次進入管理後臺界面,發現模型book已經出如今管理後臺,如圖:
此時,你可能會發現模型名字怎麼變成圖書了,還記得在(二)節中設計模型用的verbose_name = '圖書'吧,就是這個效果。
四 定製Admin後臺
經過上述步驟,已經能夠在admin管理後臺看到定義的模型了,後臺頁面顯示和佈局都是默認的,Django提供了ModelAdmin類實現對模型展現的定製,以下是對BOOK模型進行的簡單定製:
@admin.register(Book) class BookAdmin(admin.ModelAdmin): list_display = ('book_name','author_name','total_num','available_num','book_img') #readonly_fields = ('book_name','author_name','total_num','available_num') search_fields = ('book_name','author_name') list_filter = ['available_num'] list_per_page = 10 admin.AdminSite.site_header = '圖書借閱管理系統' admin.AdminSite.site_title = '管理後臺'
說明:
1. 直接能夠按照以上代碼套路定製本身的後臺,首先定義一個ModelAdmin的子類BookAdmin,在該子類裏定製展現效果和特性,同時使用admin.register裝飾器,接收的參數就是須要定製的模型;
2. 經常使用定製字段說明以下:
1) list_display: 顯示在頁面的字段;
2)readonly_fields: 指定哪些字段是隻讀類型;
3)search_fields: 在頁面添加搜索框,且指定按哪些字段進行搜索;
4)list_per_page: 設置每頁顯示多少個對象,若是超過,會進行分頁;
5)admin.AdminSite.site_header:設置站點頁頭
6)admin.AdminSite.site_title: 設置頁面標題
7)list_filter:過濾頁面元素
簡單定製後,效果以下: