通過圖書管理系統學習:一對一,一對多,多對多的操作 文件上傳 ...
出版社的增刪改查
展示出版社列表:
1. 創建一個表結構:
2. 再配合那倆條命令即可創建一個press表
創建出版社函數,併在url中進行配置
創建HTML頁面,展示出版社的表
for迴圈
{% for i in ret %} ---- 模板語言
i 指的是 從 ret 中拿到的對象
{{ forloop.counter }} --> for迴圈從1開始計數
{{ forloop.counter0 }} --> for迴圈從0開始計數
{% endfor %}
添加出版社(在原表中添加)
要添加出版社,先跳轉到添加頁面,
創建添加出版社函數(在url中配置好):
創建添加頁面
把頁面輸入的信息以post的方式提交一個字典,封裝到name鍵
值中,最終傳給press_add
添加完成並展示:
還可以在出版社列表頁面建立 a 標簽,點擊即可跳轉添加頁面
刪除出版社:
在出版社列表中添加刪除操作,點擊刪除項,把要刪除的該項在資料庫
中刪除.
在出版社列表的html頁面中標明點擊''刪除''請求後,接收請求的對象.
創建刪除出版社的函數:
即創建接收請求的函數,對該請求做出處理.
編輯出版社
修改原有出版社的信息,在原有列表上添加'編輯'選項,點擊該選項
跳轉到編輯頁面.
創建編輯出版社的函數(並完成配置)
在函數中修改並同步資料庫
創建編輯的HTML頁面
圖書的增刪改查
在資料庫中創建圖書的列表:
在models中創建圖書的表結構的類
通過那倆個命令在資料庫中創建表
創建對書列表進行操作的函數(併在url中配置好)
創建在前端展示的html頁面
註意: 在函數中對錶進行操作,需要通過ORM語言編寫的表結構類,來獲
取表的信息
輸出的Press object 對象是通過外鍵獲取的出版社對象
還可以列印出出版社名字: print(data[0].press.name)
此外 data[0].press_id 可以查詢到與這本書相關聯的出版社id 是通過外鍵查詢的,在
類中創建表結構過程中,創建外鍵會自動在資料庫中創建外鍵關聯id,此時的外
鍵id就在本表中.
data[0].press.id 也可以查詢到與這本書相關聯的出版社id 是通過連表查詢的,
.press是出版社的對象, .id自然能夠獲取到與data[0]相關的出版社id.
添加書籍
創建添加書籍的操作函數(在url中配置好)
(註意: 上圖name錯誤,表結構中 書籍的名字標題是title)
創建添加頁面
刪除書籍
在書籍列表中添加刪除操作項,點擊操作項跳轉帶刪除函數進行刪除操作.
創建要刪除書籍的操作函數
編輯書籍
在書籍頁面中,添加編輯操作的選項,選中要編輯的書籍對象,跳轉頁面進
行修改,然後保存.
創建編輯書籍的操作函數(並配置好):
註意 : 末尾的 'return' 表示當還未進行信息編輯時,需要先跳轉到編輯頁面,依照選定好的對
象進行信息的編輯,編輯完成後,提交.
創建編輯頁面:
作者的曾刪改查(多對多)
作者可以寫多本書,一本書也可以有多個作者.
創建作者和書的關係
方法一:
# 作者: class Author(models.Model): id = models.AuthorField(primary_key=True) # 自增id主鍵 name = models.CharField(max_length=32) # 作者名字 # 創建作者和書籍的關係表 class Author2Book(models.Model): id = models.AuthorField(primary_key=True) author = models.Foreignkey(to='Author', on_delete=models.CASCADE) book = models.Foreignkey(to='Book', on_delete=models.CASCADE)
方法二 (用orm創建)
class Author(models.Model): id = models.AuthorField(primary_key=True) # 自增id主鍵 name = models.CharField(max_length=32) # 作者名字 books = models.ManyToManyField(to='Book')
查詢 在資料庫中找到所有作者信息,然後在頁面展示出來
創建作者函數並配置好
創建html文件在頁面上展示出來
添加 創建添加操作的函數,展示添加頁面,獲取用戶的添加信息,返回給
資料庫,再展示作者信息.
創建添加操作的函數,並配置好
創建獲取信息的頁面
刪除和編輯
在作者列表中添加刪除操作項,鎖定要刪除的對象,
創建要刪除的操作函數,
在作者列表中添加編輯操作,鎖定要編輯的對象
創建編輯函數,並配置好:
創建html頁面,展示編輯頁面並獲取用戶填寫的信息
註意: 模板語言, in 判斷 {% if book in author.books.all %} 意為該
書在作者所關聯的書籍列表中的話.
ORM 編輯多對多不能直接編輯第三張表,要藉助ORM提供的方法:
all() ; add(id1, id2); set([id1, id2]); clear()清空
上傳文件
創建上傳文件的操作函數,並配置好
創建上傳文件的html頁面
enctype="multipart/form-data" 是文件操作必須要有的