欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python中關(guān)于前后端分離開發(fā)入門的示例分析-創(chuàng)新互聯(lián)

本篇文章為大家展示了Python中關(guān)于前后端分離開發(fā)入門的示例分析,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

為青縣等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及青縣網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、青縣網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

前后端分離開發(fā)入門

在傳統(tǒng)的Web應(yīng)用開發(fā)中,大多數(shù)的程序員會將瀏覽器作為前后端的分界線。將瀏覽器中為用戶進(jìn)行頁面展示的部分稱之為前端,而將運(yùn)行在服務(wù)器,為前端提供業(yè)務(wù)邏輯和數(shù)據(jù)準(zhǔn)備的所有代碼統(tǒng)稱為后端。所謂前后端分離的開發(fā),就是前后端工程師約定好數(shù)據(jù)交互接口,并行的進(jìn)行開發(fā)和測試,后端只提供數(shù)據(jù),不負(fù)責(zé)將數(shù)據(jù)渲染到頁面上,前端通過HTTP請求獲取數(shù)據(jù)并負(fù)責(zé)將數(shù)據(jù)渲染到頁面上,這個工作是交給瀏覽器中的JavaScript代碼來完成。

使用前后端分離開發(fā)有諸多的好處,下面我們簡要的說下這些好處:

  1. 提升開發(fā)效率。前后端分離以后,可以實現(xiàn)前后端代碼的解耦,只要前后端溝通約定好應(yīng)用所需接口以及接口參數(shù),便可以開始并行開發(fā),無需等待對方的開發(fā)工作結(jié)束。在這種情況下,前后端工程師都可以只專注于自己的開發(fā)工作,有助于打造出更好的團(tuán)隊。除此之外,在前后端分離的開發(fā)模式下,即使需求發(fā)生變更,只要接口與數(shù)據(jù)格式不變,后端開發(fā)人員就不需要修改代碼,只要前端進(jìn)行變動即可。

  2. 增強(qiáng)代碼的可維護(hù)性。前后端分離后,應(yīng)用的代碼不再是前后端混合,只有在運(yùn)行期才會有調(diào)用依賴關(guān)系,這樣的話維護(hù)代碼的工作將變得輕松愉快很多,再不會牽一發(fā)而動全身。當(dāng)你的代碼變得簡明且整潔時,代碼的可讀性和可維護(hù)性都會有質(zhì)的提升。

  3. 支持多終端和服務(wù)化架構(gòu)。前后端分離后,同一套數(shù)據(jù)接口可以為不同的終端提供服務(wù),更有助于打造多終端應(yīng)用;此外,由于后端提供的接口之間可以通過HTTP(S)進(jìn)行調(diào)用,有助于打造服務(wù)化架構(gòu)(包括微服務(wù))。

接下來我們就用前后端分離的方式來改寫之前的投票應(yīng)用。

返回JSON格式的數(shù)據(jù)

剛才說過,在前后端分離的開發(fā)模式下,后端需要為前端提供數(shù)據(jù)接口,這些接口通常返回JSON格式的數(shù)據(jù)。在Django項目中,我們可以先將對象處理成字典,然后就可以利用Django封裝的JsonResponse向瀏覽器返回JSON格式的數(shù)據(jù),具體的做法如下所示。

def show_subjects(request):
 queryset = Subject.objects.all()
 subjects = []
 for subject in queryset:
 subjects.append({
 'no': subject.no,
 'name': subject.name,
 'intro': subject.intro,
 'isHot': subject.is_hot
 })
 return JsonResponse(subjects, safe=False)

上面的代碼中,我們通過循環(huán)遍歷查詢學(xué)科得到的QuerySet對象,將每個學(xué)科的數(shù)據(jù)處理成一個字典,在將字典保存在名為subjects的列表容器中,最后利用JsonResponse完成對列表的序列化,向瀏覽器返回JSON格式的數(shù)據(jù)。由于JsonResponse序列化的是一個列表而不是字典,所以需要指定safe參數(shù)的值為False才能完成對subjects的序列化,否則會產(chǎn)生TypeError異常。

可能大家已經(jīng)發(fā)現(xiàn)了,自己寫代碼將一個對象轉(zhuǎn)成字典是比較麻煩的,如果對象的屬性很多而且某些屬性又關(guān)聯(lián)到一個比較復(fù)雜的對象時,情況會變得更加糟糕。為此我們可以使用一個名為bpmappers的三方庫來簡化將對象轉(zhuǎn)成字典的操作,這個三方庫本身也提供了對Django框架的支持。

安裝三方庫bpmappers。

pip install bpmappers

編寫映射器(實現(xiàn)對象到字典轉(zhuǎn)換)。

from bpmappers.djangomodel import ModelMapper
from poll2.models import Subject
class SubjectMapper(ModelMapper):
 
 class Meta:
 model = Subject

修改視圖函數(shù)。

def show_subjects(request):
 queryset = Subject.objects.all()
 subjects = []
 for subject in queryset:
 subjects.append(SubjectMapper(subject).as_dict())
 return JsonResponse(subjects, safe=False)

配置URL映射,然后訪問該接口,可以得到如下所示的JSON格式數(shù)據(jù)。

[
 {
 "no": 101,
 "name": "Python全棧+人工智能",
 "intro": "Python是一種計算機(jī)程序設(shè)計語言。是一種面向?qū)ο蟮膭討B(tài)類型語言,最初被設(shè)計用于編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越來越多被用于獨(dú)立的、大型項目的開發(fā)。",
 "create_date": "2017-08-01",
 "is_hot": true
 },
 // 此處省略下面的內(nèi)容
]

如果不希望在JSON數(shù)據(jù)中顯示學(xué)科的成立時間,我們可以在映射器中排除create_date屬性;如果希望將是否為熱門學(xué)科對應(yīng)的鍵取名為isHot(默認(rèn)的名字是is_hot),也可以通過修改映射器來做到。具體的做法如下所示:

from bpmappers import RawField
from bpmappers.djangomodel import ModelMapper
from poll2.models import Subject
class SubjectMapper(ModelMapper):
 isHot = RawField('is_hot')
 class Meta:
 model = Subject
 exclude = ('create_date', 'is_hot')

再次查看學(xué)科接口返回的JSON數(shù)據(jù)。

[
 {
 "no": 101,
 "name": "Python全棧+人工智能",
 "intro": "Python是一種計算機(jī)程序設(shè)計語言。是一種面向?qū)ο蟮膭討B(tài)類型語言,最初被設(shè)計用于編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越來越多被用于獨(dú)立的、大型項目的開發(fā)。",
 "isHot": true
 },
 // 此處省略下面的內(nèi)容
]

關(guān)于bpmappers詳細(xì)的使用指南,請參考它的官方文檔,這個官方文檔是用日語書寫的,可以使用瀏覽器的翻譯功能將它翻譯成你熟悉的語言即可。

使用Vue.js渲染頁面

關(guān)于Vue.js的知識,我們在第21天到第30天的內(nèi)容中已經(jīng)介紹過了,這里我們不再進(jìn)行贅述。如果希望全面的了解和學(xué)習(xí)Vue.js,建議閱讀它的官方教程或者在YouTube上搜索Vue.js的新手教程(Crash Course)進(jìn)行學(xué)習(xí)。

重新改寫subjects.html頁面,使用Vue.js來渲染頁面。

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>學(xué)科</title>
</head>
<body>
 <h2>所有學(xué)科</h2>
 <hr>
 <div id="app">
 <div v-for="subject in subjects">
 <h4>
 <a :href="getTeachersHref(subject.no)">{{ subject.name }}</a>
 <img v-if="subject.isHot" src="/static/images/hot.png" width="32">
 </h4>
 <p>{{ subject.intro }}</p>
 </div>
 </div>
 <script src="/tupian/20230522/script>
 <script>
 const app = new Vue({
 el: '#app',
 data: {
 subjects: []
 },
 created() {
 fetch('/subjects/')
 .then(resp => resp.json())
 .then(json => this.subjects = json)
 },
 methods: {
 getTeachersHref(sno) {
 return `/static/teachers.html/?sno=${sno}`
 }
 }
 })
 </script>
</body>
</html>

前后端分離的開發(fā)需要將前端頁面作為靜態(tài)資源進(jìn)行部署,項目實際上線的時候,我們會對整個Web應(yīng)用進(jìn)行動靜分離,靜態(tài)資源通過Nginx或Apache服務(wù)器進(jìn)行部署,生成動態(tài)內(nèi)容的Python程序部署在uWSGI或者Gunicorn服務(wù)器上,對動態(tài)內(nèi)容的請求由Nginx或Apache路由到uWSGI或Gunicorn服務(wù)器上。

在開發(fā)階段,我們通常會使用Django自帶的測試服務(wù)器,如果要嘗試前后端分離,可以先將靜態(tài)頁面放在之前創(chuàng)建的放靜態(tài)資源的目錄下!

上述內(nèi)容就是Python中關(guān)于前后端分離開發(fā)入門的示例分析,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

網(wǎng)站名稱:Python中關(guān)于前后端分離開發(fā)入門的示例分析-創(chuàng)新互聯(lián)
URL地址:http://aaarwkj.com/article14/pjhge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航自適應(yīng)網(wǎng)站、Google域名注冊、ChatGPT、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
午夜国产精品福利一二| 日本高清久久一区二区三区| 亚洲黄色片大奶子水多| 亚洲国内一区二区三区| 中文字幕成人资源网站| 国产亚洲精品精品国产亚洲| 人妻少妇被粗大爽av| 国产精品视频黄色一区| 日韩亚洲在线中文字幕| 在线国产偷拍自拍视频| 国产三级视频在线观看视频| 久久免费观看性生活片| dy888午夜福利精品国产97| 日韩精品中文字幕人妻系列| 99热精品这里只有精品| 国产91日韩欧美在线观看| 欧美性极品少妇精品网站| 国产在线精品91系列| 午夜精品一区二区亚洲| 欧美午夜视频一区二区福利| 国产av一区二区三区中文| 免费国产成人高清在线视频| 未满十八禁止免费视频| 日韩欧美国产精品一区二区三区| 在线播放av男人的天堂| 精品女厕一区二区三区| 日韩人妻熟妇中文字幕| 国产一区精品在线免费看| 国产精品_国产精品_k频道| 成人午夜福利视频大全| 中文字幕国产精品资源| 亚洲精品成av人在线观看| 九九在线免费视频蜜臀| 国产精品欧美日韩中文| 国产黄色免费精品网站| 黄色欧美在线观看免费| 欧美人与性禽动交情品| 成人在线午夜免费视频| 91黄色国产在线播放| 不卡免费av在线高清| 久久久久久成人亚洲|