后台使用orm多还是直接sql_Django应用app创建及ORM
Django應(yīng)用app創(chuàng)建及ORM
一.重要知識(shí)點(diǎn)回顧:
1. form表單提交數(shù)據(jù)的注意事項(xiàng):
1. 是form不是from,必須要有method和action (action用來指定你的數(shù)據(jù)提交到后臺(tái)哪個(gè)地方,method用來指定你提交數(shù)據(jù)的方式)
2. 所有獲取用戶輸入的表單標(biāo)簽要放在form表單里面,表單標(biāo)簽必須要有name屬性 (name屬性在后臺(tái)會(huì)作為key來取出對(duì)應(yīng)的輸入內(nèi)容)
3. form表單必須要有submit按鈕 (將form表單包含的所有輸入信息提交至action所指向的地址)
2. GET和POST
什么時(shí)候用GET: (會(huì)將請(qǐng)求數(shù)據(jù)信息直接拼接至URL尾部)
向服務(wù)端請(qǐng)求一個(gè)網(wǎng)頁的時(shí)候
搜索引擎檢索時(shí)
什么時(shí)候用POST: (將數(shù)據(jù)加密放入特定的請(qǐng)求數(shù)據(jù)體內(nèi),相對(duì)安全且前不限制數(shù)據(jù)大小)
使用表單向服務(wù)器提交數(shù)據(jù)時(shí)
3. request.method --> 獲取的是你請(qǐng)求的方法(GET/POST...)必須是大寫!!!
4. request.POST --> 獲取POST提交過來的全部數(shù)據(jù)(字典)(獲取此類數(shù)據(jù)簡易實(shí)用get取值方式,數(shù)據(jù)不存在也不會(huì)報(bào)錯(cuò)影響服務(wù))
5. redirect --> 跳轉(zhuǎn)到指定頁面!!!(括號(hào)內(nèi)指定路徑即可)
二.應(yīng)用APP
1.什么是app?
app即一個(gè)個(gè)分支,項(xiàng)目好比是一個(gè)學(xué)校,應(yīng)用app就好比一個(gè)個(gè)學(xué)院,所以一個(gè)項(xiàng)目下可以有多個(gè)app應(yīng)用(后續(xù)會(huì)了解到一個(gè)app也可以有多個(gè)項(xiàng)目,這里暫不考慮)
2.如何在Django項(xiàng)目中創(chuàng)建app應(yīng)用
在創(chuàng)建的Django項(xiàng)目界面點(diǎn)擊pycharm為我們配置的終端(terminal),輸入圖示內(nèi)容即可創(chuàng)建名為app01的app應(yīng)用,(這里在輸入的時(shí)候,不必全部一個(gè)一個(gè)自己敲,Tab鍵可自動(dòng)幫我們補(bǔ)全,是不是很人性化~)
3.給創(chuàng)建好的app應(yīng)用添加配置(娶了人家就得給人家正名吧~)
三.ORM介紹
ORM概念
對(duì)象關(guān)系映射(Object Relational Mapping,簡稱ORM)模式是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù)。
簡單的說,ORM是通過使用描述對(duì)象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將程序中的對(duì)象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫中。
ORM在業(yè)務(wù)邏輯層和數(shù)據(jù)庫層之間充當(dāng)了橋梁的作用。
ORM由來
讓我們從O/R開始。字母O起源于"對(duì)象"(Object),而R則來自于"關(guān)系"(Relational)。
幾乎所有的軟件開發(fā)過程中都會(huì)涉及到對(duì)象和關(guān)系數(shù)據(jù)庫。在用戶層面和業(yè)務(wù)邏輯層面,我們是面向?qū)ο蟮摹.?dāng)對(duì)象的信息發(fā)生變化的時(shí)候,我們就需要把對(duì)象的信息保存在關(guān)系數(shù)據(jù)庫中。
按照之前的方式來進(jìn)行開發(fā)就會(huì)出現(xiàn)程序員會(huì)在自己的業(yè)務(wù)邏輯代碼中夾雜很多SQL語句用來增加、讀取、修改、刪除相關(guān)數(shù)據(jù),而這些代碼通常都是重復(fù)的。
ORM的優(yōu)勢
ORM解決的主要問題是對(duì)象和關(guān)系的映射。它通常把一個(gè)類和一個(gè)表一一對(duì)應(yīng),類的每個(gè)實(shí)例對(duì)應(yīng)表中的一條記錄,類的每個(gè)屬性對(duì)應(yīng)表中的每個(gè)字段。
ORM提供了對(duì)數(shù)據(jù)庫的映射,不用直接編寫SQL代碼,只需像操作對(duì)象一樣從數(shù)據(jù)庫操作數(shù)據(jù)。
讓軟件開發(fā)人員專注于業(yè)務(wù)邏輯的處理,提高了開發(fā)效率。
ORM的劣勢
ORM的缺點(diǎn)是會(huì)在一定程度上犧牲程序的執(zhí)行效率。
ORM用多了SQL語句就不會(huì)寫了,關(guān)系數(shù)據(jù)庫相關(guān)技能退化...
ORM總結(jié)
ORM只是一種工具,工具確實(shí)能解決一些重復(fù),簡單的勞動(dòng)。這是不可否認(rèn)的。
但我們不能指望某個(gè)工具能一勞永逸地解決所有問題,一些特殊問題還是需要特殊處理的。
但是在整個(gè)軟件開發(fā)過程中需要特殊處理的情況應(yīng)該都是很少的,否則所謂的工具也就失去了它存在的意義。
四.Django中的ORM
Django為我們提供的ORM可以匹配很多數(shù)據(jù)庫比如Mysql,oracle等,ORM強(qiáng)大就強(qiáng)大在操作的人不需要考慮使用的數(shù)據(jù)庫到底是什么類型ORM會(huì)自動(dòng)幫我們翻譯成對(duì)應(yīng)的數(shù)據(jù)庫引擎語言,我們要做的就是為其配置好相應(yīng)的配置。
1. 在Django項(xiàng)目的settings.py文件中,配置數(shù)據(jù)庫連接信息(這里回憶一下我們?nèi)绾斡胮ymysql操作數(shù)據(jù)庫的):
2. 告訴Django怎么連接
Django默認(rèn)使用的是 MySQLdb模塊 連接數(shù)據(jù)庫告訴Django用pymysql這個(gè)模塊去連接MySQL,在settings.py同目錄下的__init__.py文件中,指定使用pymysql模塊代替MySQLdb
3. 在app/models.py文件中定義類(類及表,對(duì)象即行數(shù)據(jù),屬性即字段)
4. 執(zhí)行創(chuàng)建表的操作
這里仍然需要在pycharm提供的終端中敲打下列兩條命令
1. python3 manage.py makemigrations --> 將models.py的修改登記到小本本上
2. python3 manage.py migrate --> 將修改翻譯成SQL語句,去數(shù)據(jù)庫執(zhí)行
或者
5.pycharm鏈接數(shù)據(jù)庫
如果右側(cè)沒有database按鈕,可通過下圖找到
由于這里我們用的是mysql數(shù)據(jù)庫,所以直接點(diǎn)擊mysql進(jìn)行下面的界面
6.通過pycharm操作數(shù)據(jù)庫
五.利用上述配置實(shí)現(xiàn)簡單的注冊(cè)登錄功能
1.簡述Django框架數(shù)據(jù)交互大致順序
首先啟動(dòng)我們Django項(xiàng)目(具體如何操作并啟動(dòng),請(qǐng)看上一篇博客),點(diǎn)擊pycharm下方出現(xiàn)的IP端口組成的地址,瀏覽器自動(dòng)跳轉(zhuǎn)至我們Django界面,我們通過輸入路徑,瀏覽器幫我們自動(dòng)將路徑發(fā)給服務(wù)端,我們?cè)谀玫铰窂竭M(jìn)行解析后,通過寫好的功能匹配對(duì)應(yīng)關(guān)系,給客戶端返回相應(yīng)的數(shù)據(jù)(最簡化理解Django前后端交互,即一次請(qǐng)求,對(duì)應(yīng)一次相應(yīng),任何復(fù)雜的邏輯都僅僅是在這一來一回中通過一系列的代碼控制模板渲染頁面跳轉(zhuǎn)實(shí)現(xiàn)的,跳出來看簡單一批~~~)
2.構(gòu)建數(shù)據(jù)流向(專業(yè)一點(diǎn)就叫路由)
3.html文件里我們簡單給個(gè)form表單即可
4.來跑一下試試
填入數(shù)據(jù),如果匹配成功就做下一步操作,細(xì)心看完我的博客的應(yīng)該知道我設(shè)置的正確的賬號(hào)和密碼,
當(dāng)我們輸入正確的時(shí)候,我這里后臺(tái)直接告訴瀏覽器去重定向訪問百度首頁,
六.五中的例子有不足的地方在于沒有加入數(shù)據(jù)庫,在五的基礎(chǔ)上我們看看加入數(shù)據(jù)庫之后的操作。
下面的add函數(shù)就是做新增數(shù)據(jù)的界面,(前期在剛接觸Django框架時(shí),牢牢記住前后端交互,你給我一個(gè)請(qǐng)求,我給你一個(gè)相應(yīng),不多BB不多交流),
把看似復(fù)雜的前后端交互透徹理解為面向過程式編程,我們每次只考慮單一請(qǐng)求應(yīng)該如何去處理即應(yīng)對(duì)即可,這樣一個(gè)一個(gè)的對(duì)應(yīng)處理到最后就是一個(gè)龐大的
項(xiàng)目邏輯,外人看來復(fù)雜一批~其實(shí)內(nèi)部原理其實(shí)很簡單~~~
總結(jié)
以上是生活随笔為你收集整理的后台使用orm多还是直接sql_Django应用app创建及ORM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vscode连接远程服务器 SSH
- 下一篇: redis内存淘汰和持久化_redis