91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django web開發系列(三)模型與管理后臺

發布時間:2020-06-23 22:08:06 來源:網絡 閱讀:934 作者:平山 欄目:編程語言

一 前言

在第(二)節介紹了模型Book的設計,實質就是在models.py里寫了一個Book類,定義了變量和元數據,也就是設計數據庫里對應的表應該長什么樣子。就如前面所說,你可以將定義的模型類理解成數據庫的一張表,類的實例對象理解成表中一行數據,類中的變量對應表中字段。Python奉行代碼優先的理念,通過定義模型類,實現python代碼與數據庫操作的解耦,即使Python開發者不會數據庫SQL,也能輕松完成數據庫操作。


模型類定義完后,如何實現在數據庫生成對應的表呢?如何通過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后臺管理模型

Django的省心之處就是它會基于項目模型創建一套簡易的后臺管理系統,通過該系統可以方便的對模型進行增刪改查,雖然也被很多人詬病,Django太重、集成度太強,但既然有現成的、省事兒的,為啥還要自己造輪子呢?!

進入Admin后臺管理的步驟如下:

1. 首次登錄,創建一個admin站點用戶,命令如下:

python manage.py createsuperuser


根據提示輸入用戶名、郵箱地址、密碼即可。

2. 啟動服務器,命令如下:

python manage.py runserver 127.0.0.1:8000


IP:端口根據實際修改,啟動后,瀏覽器訪問http://127.0.0.1:8000/admin/,就會看到管理后臺界面,如圖:

Django web開發系列(三)模型與管理后臺
上圖中管理后臺登錄界面的站點名字已經被我從默認的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已經出現在管理后臺,如圖:

Django web開發系列(三)模型與管理后臺

此時,你可能會發現模型名字怎么變成圖書了,還記得在(二)節中設計模型用的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:過濾頁面元素

簡單定制后,效果如下:

Django web開發系列(三)模型與管理后臺

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴彦淖尔市| 习水县| 河津市| 鹤山市| 连平县| 延津县| 平江县| 都匀市| 麻城市| 乌拉特前旗| 绿春县| 葫芦岛市| 凯里市| 黑河市| 常州市| 吴堡县| 巴彦淖尔市| 察雅县| 巴楚县| 星座| 泰宁县| 吉水县| 广昌县| 甘洛县| 剑川县| 泸定县| 宁阳县| 依兰县| 容城县| 佛教| 独山县| 呼伦贝尔市| 明光市| 南汇区| 临城县| 化隆| 奈曼旗| 普洱| 平阳县| 资讯| 邯郸市|