日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

django restful 请求_利用 Django REST framework 构建 RESTful Web API

發(fā)布時(shí)間:2025/3/20 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django restful 请求_利用 Django REST framework 构建 RESTful Web API 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

利用 Django REST framework 構(gòu)建 RESTful Web API

終于到了動(dòng)手操作的環(huán)節(jié)啦,這一節(jié),我們以師生管理系統(tǒng)為例,帶領(lǐng)大家搭建一套 framework Web API。“工欲善其事,必先利其器”,我們選用當(dāng)下最為流行的 Django REST framework 為工具,快速實(shí)現(xiàn)這套API。

安裝 Django REST framework 需要以下依賴:

Python (3.5, 3.6, 3.7, 3.8)

Django (1.11, 2.0, 2.1, 2.2, 3.0)

Django REST framework是以 Django 擴(kuò)展應(yīng)用的方式提供的,所以我們可以直接利用已有的Django環(huán)境而無需重新創(chuàng)建。(若沒有Django環(huán)境,需要先創(chuàng)建環(huán)境安裝Django)

1. 安裝 Django REST framework

django 安裝過程:

django-rest-framework 安裝過程:

2.創(chuàng)建工程和應(yīng)用

工程和應(yīng)用創(chuàng)建完成后,目錄結(jié)構(gòu)如下圖所示:

3. 注冊(cè)rest_framework應(yīng)用

Django REST framework 可視作是 Django 的一個(gè)應(yīng)用,在使用之前,需要在 INSTALLED_APPS 中注冊(cè)。

在完成以上操作后,就可以使用 Django REST framework 開發(fā) Restful Web API 了。接下來,我們將以學(xué)生管理系統(tǒng)為例,帶大家一覽 Django REST framework 如何高效開發(fā) REST API。

4.創(chuàng)建、遷移模型,并添加數(shù)據(jù)

構(gòu)建數(shù)據(jù)模型,是搭建 Restful Web API 的基礎(chǔ)。構(gòu)建模型,相當(dāng)于構(gòu)建數(shù)據(jù)庫結(jié)構(gòu),且無需繁瑣的 SQL 語言,另一個(gè)好處是,即使切換不同的數(shù)據(jù)庫引擎(mysql 、SQL Server、Oracle等),也無需重新構(gòu)建。下方我們構(gòu)建一個(gè)學(xué)生信息表,包含學(xué)生姓名、學(xué)生年齡和學(xué)號(hào)。

終端中運(yùn)行命令以遷移模型

向數(shù)據(jù)庫中添加演示數(shù)據(jù),這里我們可以使用 PyCharm 自帶的 Database 工具來完成。由于我們使用的是sqlite3 作為數(shù)據(jù)庫,添加數(shù)據(jù)時(shí),可雙擊左側(cè)文件目錄中的 db.sqlite3 文件,而后在右側(cè) Database 工具中雙擊要操作的數(shù)據(jù)表(AppDemo_studentsmodel)。

在打開的數(shù)據(jù)表中,填入要填充的數(shù)據(jù)即可:

5. 創(chuàng)建序列化器

通常,API 包含兩個(gè)方向的操作,其一是客戶端向服務(wù)器請(qǐng)求數(shù)據(jù),其二是客戶端向服務(wù)器提交數(shù)據(jù)。當(dāng)客戶端向服務(wù)器請(qǐng)求數(shù)據(jù)時(shí),服務(wù)器在數(shù)據(jù)庫檢索相應(yīng)數(shù)據(jù),經(jīng)過序列化器序列化,再由視圖交給客戶端;客戶端向服務(wù)器提交數(shù)據(jù)時(shí),數(shù)據(jù)經(jīng)由視圖層進(jìn)行處理,而后序列化器反序列化,最后存入數(shù)據(jù)庫。

在 Restful Web API 中,序列化器相當(dāng)于客戶端和數(shù)據(jù)庫之間數(shù)據(jù)對(duì)接的橋梁,它可將服務(wù)器中的數(shù)據(jù),序列化為客戶端可解析的數(shù)據(jù)形式,相反,也可將客戶端提供的數(shù)據(jù),反序列化為符合數(shù)據(jù)庫要求的數(shù)據(jù)形式。接下來,我們?cè)?AppDemo 應(yīng)用中新建 serializers.py 用于保存該應(yīng)用的序列化器。

創(chuàng)建一個(gè) StudentsSerializer 用于序列化與反序列化學(xué)生信息:

model :指明該序列化器處理的數(shù)據(jù)字段從模型類 StudentsModel 參考生成;

fields :指明該序列化器包含模型類中的哪些字段,’all’指明包含所有字段。

5. 編寫視圖

在 Restful Web API 中,視圖扮演的角色是數(shù)據(jù)處理器。例如,客戶端需要獲取一個(gè)學(xué)生一次期末考試后各科成績的平均值,而數(shù)據(jù)庫中僅存了各科的成績,這時(shí),就需要視圖對(duì)數(shù)據(jù)處理,根據(jù)各科成績求出平均值后返回給客戶端。由于本案例無需對(duì)數(shù)據(jù)進(jìn)行處理,視圖實(shí)現(xiàn)較為簡單。在 booktest 應(yīng)用的 views.py 中創(chuàng)建視圖 BookInfoViewSet,這是一個(gè)視圖集合。

queryset 指明該視圖集在查詢數(shù)據(jù)時(shí)使用的查詢集;

serializer_class 指明該視圖在進(jìn)行序列化或反序列化時(shí)使用的序列化器。

6. 定義路由

路由是用來定義 RESTful Web API 不同接口所對(duì)應(yīng)的不同路徑地址。在本案例中,我們是要獲得學(xué)生的信息,根據(jù)第 3 節(jié)中介紹的設(shè)計(jì)規(guī)范,地址應(yīng)設(shè)計(jì)為:http://www.demo.com/api/students 。在 ProjectDemo 的 urls.py 中定義路由信息。

8. 運(yùn)行測試

終端中運(yùn)行當(dāng)前程序(與運(yùn)行 Django 一樣):

此時(shí),我們的 RESTful Web API 已構(gòu)建完畢。由于我們是在本地測試,所以 API 域名部分采用本機(jī)地址。在瀏覽器地址欄輸入 http://127.0.0.1:8000/api,即可看到當(dāng)前項(xiàng)目中所有接口連接。

在頁面底部的表單中,我們可以輸入學(xué)生信息,點(diǎn)擊 POST 按鈕,即可實(shí)現(xiàn)向?qū)W生列表中添加新的學(xué)生信息:

點(diǎn)擊 POST 按鈕后,返回如下信息:

此時(shí)再點(diǎn)擊 GET 按鈕,我們發(fā)現(xiàn)上一步中添加的學(xué)生(小白)已經(jīng)顯示在所有學(xué)生信息中。

在瀏覽器中輸入網(wǎng)址 127.0.0.1:8000/api/students/2/,可以訪問獲取單個(gè)學(xué)生信息的接口(id 為 2 的學(xué)生),如下圖所示:

如果需要修改該學(xué)生的信息,可在頁面底部表單中填寫需要修改的信息,即可訪問修改單個(gè)學(xué)生的接口。我們將小紅年齡修改為 20:

點(diǎn)擊 PUT,返回如下頁面信息,此時(shí)小紅的年齡信息已經(jīng)修改完畢:

點(diǎn)擊 DELETE 按鈕,可以訪問刪除學(xué)生的接口:

點(diǎn) DELETE 后返回,如下頁面,此時(shí) id 為 2 的學(xué)生小紅已被刪除:

9.小結(jié)

本節(jié)主要講解了 Django 和 Django REST framework 安裝方法,并利用 Django REST framework 實(shí)現(xiàn)了一個(gè)簡單的學(xué)生管理系統(tǒng) RESTful Web API。至此,一個(gè)符合 RESTful 規(guī)范的簡單 API 就創(chuàng)建完成了。除此之外,Django REST framework 還為我們提供了許多高級(jí)功能,我們將在后續(xù)小節(jié)為大家詳細(xì)介紹。

總結(jié)

以上是生活随笔為你收集整理的django restful 请求_利用 Django REST framework 构建 RESTful Web API的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。