Django REST framework快速入門

2021-08-25 08:42:49 字數 4720 閱讀 3650

#django rest framework快速入門

###一.django rest framework簡介

1.在開發rest api的檢視中,雖然每個檢視具體操作的資料不同,但增、刪、改、查的實現流程基本套路化,所以這部分**也是可以復用簡化編寫的:

增:校驗請求資料 -> 執行反序列化過程 ->儲存資料庫 ->將儲存的物件序列化並返回

刪:判斷要刪除的資料是否存在 -> 執行資料庫刪除

改:判斷要修改的資料是否存在 ->校驗請求的資料 -> 執行反序列化過程 ->儲存資料庫 ->將儲存的物件序列化並返回

查:查詢資料庫 -> 將資料序列化並返回

django rest framework可以幫助我們簡化上述部分的**編寫,大大提高rest api的開發速度

django rest framework 框架是乙個用於構建web api 的強大而又靈活的工具。

通常簡稱為drf框架 或 rest framework。

drf框架是建立在django框架基礎之上

###二.django rest framework特點

###三.django rest framework安裝配置

1.安裝

pip install djangorestframework
[

'rest_framework',]

###四.django rest framework檢視序列化與反序列化

1. 定義serializer類

django rest framework中的serializer使用類來定義,須繼承自rest_framework.serializers.serializer。

class

bookinfoserializer

(serializers.serializer)

:"""圖書資料序列化器"""

id= serializers.integerfield(label=

'id'

, read_only=

true

) name = serializers.charfield(label=

'名稱'

, max_length=20)

pub_date = serializers.datefield(label=

'發布日期'

, required=

false

) readcount = serializers.integerfield(label=

'閱讀量'

, required=

false

) commentcount = serializers.integerfield(label=

, required=

false

) image = serializers.imagefield(label=

'', required=

false

)

模型類bookinfo

class

bookinfo

(models.model)

: name = models.charfield(max_length=

20, verbose_name=

'名稱'

)#圖書名稱

pub_date = models.datefield(verbose_name=

'發布日期'

)#發布日期

readcount = models.integerfield(default=

0, verbose_name=

'閱讀量'

)#閱讀量

commentcount = models.integerfield(default=

0, verbose_name=

) is_delete = models.booleanfield(default=

false

, verbose_name=

'邏輯刪除'

)#邏輯刪除

image = models.imagefield(upload_to=

'book/'

, verbose_name=

'', null=

true

)#元類資訊 : 修改表名

class

meta

: db_table =

'bookinfo'

# 指明資料庫表名

verbose_name =

'圖書'

# 在admin站點中顯示的名稱

verbose_name_plural = verbose_name # 顯示的複數名稱

def__str__

(self)

:"""定義每個資料物件的顯示資訊"""

return self.name

2. 建立serializer物件

serializer的構造方法為:

serializer(instance=

none

, data=empty,

**kwarg)

說明:

1)用於序列化時,將模型類物件傳入instance引數

2)用於反序列化時,將要被反序列化的資料傳入data引數

3)除了instance和data引數外,在構造serializer物件時,還可通過context引數額外新增資料,如

serializer = accountserializer(account, context=

)

3.序列化使用

查詢並將資料返回前端

1) 先查詢出乙個圖書物件

from book.models import bookinfo

book = bookinfo.objects.get(id=

4)

2) 構造序列化器物件

from book.serializers import bookinfoserializer

serializer = bookinfoserializer(book)

3)獲取序列化資料

通過data屬性可以獲取序列化後的資料

serializer.data

4)如果要被序列化的是包含多條資料的查詢集queryset,可以通過新增many=true引數補充說明

books = bookinfo.objects.

all(

)serializer = bookinfoserializer(books, many=

true

)serializer.data

[ordereddict([(

'id',3

),('name'

,'笑傲江湖'),

('pub_date'

,'1995-12-24'),

('readcount',28

),('commentcount',18

),('is_delete'

,false),

('image'

,none)]

), ordereddict([(

'id',4

),('name'

,'雪山飛狐'),

('pub_date'

,'1987-11-11'),

('readcount',58

),('commentcount',24

),('is_delete'

,false),

('image'

,none)]

), ordereddict([(

'id',5

),('name'

,'新射鵰英雄傳'),

('pub_date'

,'2000-05-01'),

('readcount',0

),('commentcount',0

),('is_delete'

,false),

('image'

,none)]

), ordereddict([(

'id',7

),('name'

,'python入門'),

('pub_date'

,'2018-05-12'),

('readcount',0

),('commentcount',0

),('is_delete'

,false),

('image'

,none)]

), ordereddict([(

'id',9

),('name'

,'python運維'),

('pub_date'

,'2018-05-12'),

('readcount',0

),('commentcount',0

),('is_delete'

,false),

('image'

,'book/1.png')]

)]

loading…

django rest framework許可權控制

暴露唯讀的介面 支援get head options方法,禁用前端更改資料from rest framework import permissions 引入許可權模組 safe methods get head options class readonly permissions.basepermi...

django rest framework快取應用

在我們web製作過程中進場使用到快取技術,那麼今天python中的一種簡單便捷的快取技術與大家分享 以下是在省 市 區 聯動的位址查詢做的快取處理 使用快取 省市區的資料是經常被使用者查詢使用的,而且資料基本不變化,所以我們可以將省市區資料進行快取處理,減少資料庫的查詢次數。在django rest...

Django Rest framework使用例項

一 修改配置檔案 setting.py django.contrib.admin django.contrib.auth django.contrib.contenttypes django.contrib.sessions django.contrib.messages django.contri...