Django應用app創建及ORM
一.重要知識點回顧:
1. form表單提交數據的注意事項:
1. 是form不是from,必須要有method和action (action用來指定你的數據提交到后臺哪個地方,method用來指定你提交數據的方式)
2. 所有獲取用戶輸入的表單標簽要放在form表單里面,表單標簽必須要有name屬性 (name屬性在后臺會作為key來取出對應的輸入內容)
3. form表單必須要有submit按鈕 (將form表單包含的所有輸入信息提交至action所指向的地址)
2. GET和POST
什么時候用GET: (會將請求數據信息直接拼接至URL尾部)
向服務端請求一個網頁的時候
搜索引擎檢索時
什么時候用POST: (將數據加密放入特定的請求數據體內,相對安全且前不限制數據大小)
使用表單向服務器提交數據時
3. request.method --> 獲取的是你請求的方法(GET/POST...)必須是大寫!!!
4. request.POST --> 獲取POST提交過來的全部數據(字典)(獲取此類數據簡易實用get取值方式,數據不存在也不會報錯影響服務)
5. redirect --> 跳轉到指定頁面!!!(括號內指定路徑即可)
二.應用APP
1.什么是app?
app即一個個分支,項目好比是一個學校,應用app就好比一個個學院,所以一個項目下可以有多個app應用(后續會了解到一個app也可以有多個項目,這里暫不考慮)
2.如何在Django項目中創建app應用
在創建的Django項目界面點擊pycharm為我們配置的終端(terminal),輸入圖示內容即可創建名為app01的app應用,(這里在輸入的時候,不必全部一個一個自己敲,Tab鍵可自動幫我們補全,是不是很人性化~)

3.給創建好的app應用添加配置(娶了人家就得給人家正名吧~)

三.ORM介紹
ORM概念
對象關系映射(Object Relational Mapping,簡稱ORM)模式是一種為了解決面向對象與關系數據庫存在的互不匹配的現象的技術。
簡單的說,ORM是通過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關系數據庫中。
ORM在業務邏輯層和數據庫層之間充當了橋梁的作用。
ORM由來
讓我們從O/R開始。字母O起源于"對象"(Object),而R則來自于"關系"(Relational)。
幾乎所有的軟件開發過程中都會涉及到對象和關系數據庫。在用戶層面和業務邏輯層面,我們是面向對象的。當對象的信息發生變化的時候,我們就需要把對象的信息保存在關系數據庫中。
按照之前的方式來進行開發就會出現程序員會在自己的業務邏輯代碼中夾雜很多SQL語句用來增加、讀取、修改、刪除相關數據,而這些代碼通常都是重復的。
ORM的優勢
ORM解決的主要問題是對象和關系的映射。它通常把一個類和一個表一一對應,類的每個實例對應表中的一條記錄,類的每個屬性對應表中的每個字段。
ORM提供了對數據庫的映射,不用直接編寫SQL代碼,只需像操作對象一樣從數據庫操作數據。
讓軟件開發人員專注于業務邏輯的處理,提高了開發效率。
ORM的劣勢
ORM的缺點是會在一定程度上犧牲程序的執行效率。
ORM用多了SQL語句就不會寫了,關系數據庫相關技能退化...
ORM總結
ORM只是一種工具,工具確實能解決一些重復,簡單的勞動。這是不可否認的。
但我們不能指望某個工具能一勞永逸地解決所有問題,一些特殊問題還是需要特殊處理的。
但是在整個軟件開發過程中需要特殊處理的情況應該都是很少的,否則所謂的工具也就失去了它存在的意義。
四.Django中的ORM
Django為我們提供的ORM可以匹配很多數據庫比如Mysql,oracle等,ORM強大就強大在操作的人不需要考慮使用的數據庫到底是什么類型ORM會自動幫我們翻譯成對應的數據庫引擎語言,我們要做的就是為其配置好相應的配置。

1. 在Django項目的settings.py文件中,配置數據庫連接信息(這里回憶一下我們如何用pymysql操作數據庫的):

2. 告訴Django怎么連接
Django默認使用的是 MySQLdb模塊 連接數據庫告訴Django用pymysql這個模塊去連接MySQL,在settings.py同目錄下的__init__.py文件中,指定使用pymysql模塊代替MySQLdb

3. 在app/models.py文件中定義類(類及表,對象即行數據,屬性即字段)

4. 執行創建表的操作
這里仍然需要在pycharm提供的終端中敲打下列兩條命令
1. python3 manage.py makemigrations --> 將models.py的修改登記到小本本上
2. python3 manage.py migrate --> 將修改翻譯成SQL語句,去數據庫執行
或者

5.pycharm鏈接數據庫

如果右側沒有database按鈕,可通過下圖找到

由于這里我們用的是mysql數據庫,所以直接點擊mysql進行下面的界面

6.通過pycharm操作數據庫


五.利用上述配置實現簡單的注冊登錄功能
1.簡述Django框架數據交互大致順序
首先啟動我們Django項目(具體如何操作并啟動,請看上一篇博客),點擊pycharm下方出現的IP端口組成的地址,瀏覽器自動跳轉至我們Django界面,我們通過輸入路徑,瀏覽器幫我們自動將路徑發給服務端,我們在拿到路徑進行解析后,通過寫好的功能匹配對應關系,給客戶端返回相應的數據(最簡化理解Django前后端交互,即一次請求,對應一次相應,任何復雜的邏輯都僅僅是在這一來一回中通過一系列的代碼控制模板渲染頁面跳轉實現的,跳出來看簡單一批~~~)
2.構建數據流向(專業一點就叫路由)



3.html文件里我們簡單給個form表單即可

4.來跑一下試試



填入數據,如果匹配成功就做下一步操作,細心看完我的博客的應該知道我設置的正確的賬號和密碼,
當我們輸入正確的時候,我這里后臺直接告訴瀏覽器去重定向訪問百度首頁,
六.五中的例子有不足的地方在于沒有加入數據庫,在五的基礎上我們看看加入數據庫之后的操作。

下面的add函數就是做新增數據的界面,(前期在剛接觸Django框架時,牢牢記住前后端交互,你給我一個請求,我給你一個相應,不多BB不多交流),
把看似復雜的前后端交互透徹理解為面向過程式編程,我們每次只考慮單一請求應該如何去處理即應對即可,這樣一個一個的對應處理到最后就是一個龐大的
項目邏輯,外人看來復雜一批~其實內部原理其實很簡單~~~