Django REST Framework教程(一分鍾入門)


  引言

  使用Django Rest Framework之前我們要先知道,它是什么,能干什么用?

  引用官方一句話:Django REST框架是用於構建Web API的功能強大且靈活的工具包。

  那為什么要使用Rest Framework?

  Django REST Framework可以在Django的基礎上迅速實現API,並且自身還帶有WEB的測試頁面,可以方便的測試自己的API。

  Web應用模式

  我們開發django項目時,經常會接觸的接口這個東西,那么django-web開發接口是怎樣呢?  先了解一下web前后端開發模式《django前后分離與不分離》,這篇文章是我發布在CSDN上的一篇簡單敘述django開發模式。

總體上就是:

web應用模式分兩種:

             1. 前后端不分離

        在前后端不分離的引用模式中,前端頁面看到的效果都是由后端控制的,由后端頁面渲染或者重定向,也就是后端需要控制前端的展示,前端與后端的耦合度很高,這種模式比較適合純網頁應用,但是后端對接APP時,App可能並不需要后端返回一個HTML網頁,二僅僅是數據本身,所以后端原本返回網頁的接口不在適用前端APP應用,為了對接APP后端嗨需再開發一套接口。

        這個可以看我之前寫的DJango博客就可以知道,每次返回時都是使用render 或者redirect來返回的,需要帶上HTML頁面和參數

             2. 前后端分離

          在前后端分離的應用模式中,后端僅返回前端所需要的數據,不再渲染HTML頁面,不再控制前端的效果,只要前端用戶看到什么效果,從后端請求的數據如何加載到前端中,都由前端自己決定,網頁有網頁自己的處理方式,APP有APP的處理方式,但無論哪種前端所需要的數據基本相同,后端僅需開發一套邏輯對外提供數據即可,在前后端分離的應用模式中,前端與后端的耦合度相對較低

          在前后端分離的應用模式中,我們通常將后端開發的每一視圖都成為一個接口,或者API,前端通過訪問接口來對數據進行增刪改查

如果項目的需求是后一種情況的話,那么就可以用到Django Rest Framework了。

感興趣的可以參考官方資料:https://www.django-rest-framework.org/,如果看不懂英文的伙伴,可以參考rest的中文文檔:http://www.iamnancy.top/djangorestframework/Home/

  Django REST Framework項目

1.打開pycharm編輯器,新建項目,選擇如下:

 這里虛擬環境是django_rest,如果看不懂,可以參考我前面寫的虛擬環境使用的文章。

2.建好之后的項目結構如下:

 在創建的虛擬環境中安裝Django REST framework:

  開發步驟

  上面已經安裝好環境和包,現在就開始開發了。

1.首先配置setting文件,加入rest_framework應用。

2.全局設置,分頁和API使用權限問題,指定管理員使用:

# 設置權限策略:
REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAdminUser',
    ],
    'PAGE_SIZE': 10
}

3.數據遷移

4.創建管理員賬號:

5. 創建數據序列化,主要來展示數據:

在api應用下面新建serializers.py文件

代碼:

from django.contrib.auth.models import User, Group
from rest_framework import serializers


class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'groups')


class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ('url', 'name')

 說明:serializers用戶定義API表現形式,比如返回哪些字段,什么格式等,這里是序列化django自帶的User和Group。

6.創建視圖函數:

from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from tutorial.quickstart.serializers import UserSerializer, GroupSerializer


class UserViewSet(viewsets.ModelViewSet):
    """
    允許用戶查看或編輯的API路徑。
    """
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer


class GroupViewSet(viewsets.ModelViewSet):
    """
    允許組查看或編輯的API路徑。
    """
    queryset = Group.objects.all()
    serializer_class = GroupSerializer

 

7.在django_restAPI目錄下url.py中,添加api的路由配置:

from django.conf.urls import url, include
from rest_framework import routers
from tutorial.quickstart import views

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)

# 使用自動URL路由連接我們的API。
# 另外,我們還包括支持瀏覽器瀏覽API的登錄URL。
urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

 

8.到此所有東西都已經寫完,然后我們運行runserver命令:

 

 接口返回403,提示沒有權限,我們登陸一下試試:

 

 返回了兩個url,一個是添加用戶組,一個是添加用戶。可能有些人有疑問,為啥是兩個? 因為前面序列化數據的時候,數據展示形式寫了兩個,我們注釋一個,再運行試試:

 

查看界面:

 

點擊添加用戶鏈接,添加用戶

 

 

 

 

 

這種是通過接口形式將用戶組和用戶展示出來,我們可以登錄后台查看:

 所以,rest呈現給我們是API,以調接口形式去操作數據庫,而admin后台管理是頁面的形式操作和展示數據。

細心的人可以發現,為啥status是紅色的叉,是因為序列化的時候沒有將狀態字段顯示,現在我將它放出來:

再運行程序,添加用戶后查看:

 

 

 進入后端管理頁面查看:

 是不是就開啟了,如果不放心的同學,可以去數據庫查看一下:

 

到此,django_rest_framework入門教程已經講完,不管以后是否開發API,是否用到,對於學習django新手來說,了解一下設計模式和思想也是不錯的。

  如果對python測試開發相關技術感興趣的伙伴,歡迎加入測試開發學習交流QQ群:696400122,不積跬步,無以至千里。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM