1. 程式人生 > >Django (一)-DRF(DjangoRESTframework)工程搭建

Django (一)-DRF(DjangoRESTframework)工程搭建

一、環境安裝與配置

DRF必備依賴:

  • Python(2.7, 3.2, 3.3, 3.4, 3.5, 3.6)
  • Django(1.10, 1.11, 2.0)
    DRF是以Django擴充套件應用的方式提供的,所以我們可以直接利用已有的Django環境無需從新建立。(若沒有Django環境,需要先建立環境安裝Django)

    1. 安裝DRF
pip install djangorestframework

2. 新增rest_framework應用
利用在Django框架學習中建立的demo工程,在setting.py的INSTALL_APPS新增’rest_framework

INSTALL_APPS = [
    ...
    'rest_framework',
]

後面就可以使用DRF進行開發。

二、DRF的魅力實現

本學習Django框架時以圖書英雄為例,使用Django RESTframework快速實現圖書的RESTAPI。
1. 建立序列化器
在booktest應用中新建serializers.py用於儲存該應用的序列化器。
建立一個BookInfoSerializer用於序列化與反序列化。

class BookINfoSerializer(serializers.ModelSerializer):
    """圖書資料序列化器"""
class Meta: model = BookInfo fields = '__all__'
  • model 指明該序列化器處理的資料欄位從模型類BookInfo 參考生成
  • fields 指明該序列化器包含模型類中的哪些欄位,__all__ 指明包含所有欄位

2. 編寫檢視
在booktest應用的views.py中建立檢視BookInfoViewSet,這是一個檢視集合。

from rest_framework.viewsets import ModelViewSet
from .serialziers import BookInfoSerializer
from
.models import BooInfo class BookInfoViewSet(ModelViewSet): queryset = BookInfo.objects.all() serializer_class = BookInfoSerializer
  • queryset 指明該檢視集在查詢資料時使用的查詢集
  • serializer_class 指明該檢視在進行序列化或反序列化時使用的序列化器

3. 定義路由
在booktest應用的urls.py中定義路由資訊

from . import views
from rest_framework.routers import DefaultRouter

urlpatterns = [
    ...
]
router = defaultRouter()  # 可以處理檢視的路由器
router.register(r'books', views.BookInfoViewSet)  # 向路由器中註冊檢視集

urlpatterns += routers.urls  # 將路由器中的所有路由資訊追加到django的路由列表中

4. 執行測試
運行當前程式(與執行Django一樣)

python manage.py runserver

在瀏覽器中輸入網址127.0.0.1:8000,可以看到DRF提供的API Web瀏覽頁面:
這裡寫圖片描述
1)點選連結127.0.0.1:8000/books/ 可以訪問獲取所有資料的介面,呈現如下頁面:
這裡寫圖片描述
這裡寫圖片描述
2)在頁面底下表單部分填寫圖書資訊,可以訪問新增新圖書的介面,儲存新書
這裡寫圖片描述
點選POST後,返回如下頁面資訊:
這裡寫圖片描述
3)在瀏覽器中輸入網址127.0.0.1:8000/books/1/,可以訪問獲取單一圖書資訊的介面(id為1的圖書),呈現如下頁面:
這裡寫圖片描述
4)在頁面底部表單中填寫圖書資訊,可以訪問修改圖書的介面
這裡寫圖片描述
點選PUT,返回如下頁面資訊:
這裡寫圖片描述
5)點選DELETE按鈕,可以訪問刪除圖書的介面
這裡寫圖片描述
返回,如下頁面:
這裡寫圖片描述

感覺Django REST framework很好用!