#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...