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

  引言

  使用Django Rest Framework以前咱們要先知道,它是什麼,能幹什麼用?html

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

  那爲何要使用Rest Framework?python

  Django REST Framework能夠在Django的基礎上迅速實現API,而且自身還帶有WEB的測試頁面,能夠方便的測試本身的API。web

  Web應用模式

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

整體上就是:django

web應用模式分兩種:後端

             1. 先後端不分離設計模式

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

        這個能夠看我以前寫的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,不積跬步,無以致千里。

相關文章
相關標籤/搜索