Django的基本使用【後臺管理、視圖、模板】(第三天)

一、後臺管理
1)本地化:到項目下面的settings.py配置後臺管理的語言和時區
LANGUGE_CODE = ‘zh-hans’ #表示使用中文
TIME_ZONE = ‘Asia/Shanghai’ #表示中國時間
在這裏插入圖片描述
2)創建管理員
命令:python manage.py createsuperuser
根據提示輸入後面前臺管理界面需要用到的賬號名跟密碼。
3)註冊模型類
在應用下的admin.py中註冊模型類
在這裏插入圖片描述
4)訪問後臺管理界面
註冊模型類後,通過命令python manage.py runserver啓動服務,訪問http://127.0.0.1:8000/admin,輸入賬號密碼進入管理列表界面。
在這裏插入圖片描述
BookInfo object(3)這個表示的是模型類中函數的對象,如果想要修改,可以進入模型類models.py添加__str__方法,返回想要顯示的字段。
在這裏插入圖片描述
想要在後臺管理中顯示自定義類的內容,可以通過編輯admin.py,創建個對應的後臺管理類,並添加到註冊模型類的參數裏面,如下圖:
在這裏插入圖片描述
顯示效果:
在這裏插入圖片描述
二、視圖函數

視圖V是瀏覽器通過搜索項目路徑下面urls.py的配置,鏈接到應用目錄下views.py的函數,用來和M(模型)和T(模板)進行交互處理,最終返回一個應答。
1)定義視圖函數
在這裏插入圖片描述
2)進行url配置
在這裏插入圖片描述
在這裏插入圖片描述
配置url時,有兩種語法格式:
a)url(正則表達式,視圖函數名)
b)url(正則表達式,include(應用中的urls文件))
瀏覽器輸入訪問地址,會截取端口後面斜槓後面開始的字符串進行匹配,只要匹配到了,將不會繼續運行後面的url進行匹配,所以正則表達式需要嚴格定義,最好以$結尾。
如果在項目的urls文件中編寫的正則表達式是r’^a’,當用戶輸入如http://127.0.0.1:8000/aindex時,在項目中的urls匹配到了會去除匹配的a字符,剩下的index字符串會繼續到應用的urls文件中進行正則匹配。
三、模板
模板不單單只是html頁面,裏面可以定義變量,是通過views.py視圖進行調用。
1)創建模板文件夾
2)項目中使用settings.py配置模板目錄
在這裏插入圖片描述
使用項目絕對路徑的變量與創建的文件夾進行拼接。
3)使用模板文件
a)加載模板文件,到模板目錄下獲取html文件內容,得到一個對象
b)定義模板上下文,向模板文件傳遞數據
c)模板渲染,得到一個標準的html內容返回給前端
在這裏插入圖片描述
html如何接收視圖傳遞過來的數據?
在這裏插入圖片描述
四、完整案例補充
想要達到效果:瀏覽器訪問http://127.0.0.1:8000/books,能夠顯示圖書名稱,點擊圖書名稱可以跳轉到新的地址,顯示出相關聯的英雄信息。
解決思路:(1)在視圖中創建show_books函數,用來和M(模型)和T(模板)進行交互處理,在視圖中引入模型類,查詢出圖書所有結果保存到變量中,通過函數返回到前端頁面;
在這裏插入圖片描述
(2)在應用下配置urls,用來使瀏覽器訪問地址截取的字符串匹配到視圖中的對應函數執行;
在這裏插入圖片描述
(3)在模板目錄下新建show_book.html文件,對圖書的數據對象進行接收以及遍歷,並設置a標籤鏈接圖書id號(因爲id具有唯一性),點擊圖書後會跳轉到新的訪問路徑;
在這裏插入圖片描述
(4)在視圖中創建detail函數並設置一個參數獲取urls傳遞過來的圖書id號,通過圖書模型類查詢出所有關聯的英雄保存到變量中,在模板目錄下新建detail.html文件,將變量返回到新建的html頁面中;
在這裏插入圖片描述
(5)配置應用下的urls文件,通過正則匹配,分組之後會默認作爲參數值傳到視圖中的detail函數裏面。
在這裏插入圖片描述
(6)編輯detail.html文件,圖書所有關聯英雄信息顯示出來,如果未能找到關聯的英雄,則提示沒有英雄信息,代碼如下:
在這裏插入圖片描述
效果如下所示:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章