您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關用Django REST framework寫API的示例分析,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
Django默認是前后端綁定的,提供了Template和Form,現在流行前后端分離項目,Python大佬坐不住了,于是便有了Django REST framework:https://github.com/tomchristie
官網:https://www.django-rest-framework.org/
Django REST framework(簡稱DRF)是個Python技術棧的后端框架,用來構建RESTful API。
REST,是指REpresentational State Transfer,有個精辟的解釋什么是RESTful:
看URL就知道要什么
看Method就知道干什么
看Status Code就知道結果如何
良好的RESTful API設計的基本原則是:
返回JSON
嚴禁亂用狀態碼
處理好分頁
返回具體的實體數據而不是返回通用的JSON數據
請求對象有默認值
接下來我們使用DRF創建一個簡單的API,允許管理員查看和編輯用戶和組。
先創建名為tutorial
的project和名為quickstart
的app:
# 創建項目目錄 mkdir tutorial cd tutorial # 創建Python虛擬環境 python -m venv env # 激活虛擬環境 env\Scripts\activate.bat # Mac中使用`source env/bin/activate` # 在虛擬環境中安裝Django和Django REST framework pip install django pip install djangorestframework # 創建project,注意最后有個“.”,表示在當前目錄創建 django-admin startproject tutorial . cd tutorial # 創建app django-admin startapp quickstart cd ..
創建好的目錄結構如下:
$ pwd <some path>/tutorial $ find . . ./manage.py ./tutorial ./tutorial/__init__.py ./tutorial/quickstart ./tutorial/quickstart/__init__.py ./tutorial/quickstart/admin.py ./tutorial/quickstart/apps.py ./tutorial/quickstart/migrations ./tutorial/quickstart/migrations/__init__.py ./tutorial/quickstart/models.py ./tutorial/quickstart/tests.py ./tutorial/quickstart/views.py ./tutorial/settings.py ./tutorial/urls.py ./tutorial/wsgi.py
一般不會把app放到project里面,這里是為了避免命名沖突。
接著同步數據庫:
python manage.py migrate
然后創建一個超級管理員,密碼password123
:
python manage.py createsuperuser --email admin@example.com --username admin
序列化是指把數據庫模型轉換為JSON。新建模塊tutorial/quickstart/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']
視圖用來接受Web請求并且返回Web響應。打開tutorial/quickstart/views.py
,添加代碼:
from django.contrib.auth.models import User, Group from rest_framework import viewsets from rest_framework import permissions from tutorial.quickstart.serializers import UserSerializer, GroupSerializer class UserViewSet(viewsets.ModelViewSet): """ API endpoint that allows users to be viewed or edited. """ queryset = User.objects.all().order_by('-date_joined') serializer_class = UserSerializer permission_classes = [permissions.IsAuthenticated] class GroupViewSet(viewsets.ModelViewSet): """ API endpoint that allows groups to be viewed or edited. """ queryset = Group.objects.all() serializer_class = GroupSerializer permission_classes = [permissions.IsAuthenticated]
配置路由,打開tutorial/urls.py
,添加代碼:
from django.urls import include, path 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) # Wire up our API using automatic URL routing. # Additionally, we include login URLs for the browsable API. urlpatterns = [ path('', include(router.urls)), path('api-auth/', include('rest_framework.urls', namespace='rest_framework')) ]
因為這里用的不是view而是viewsets,所以可以自動生成API的URLconf,只需要注冊class即可。
也可以不用viewsets,用view,再自定義API URL。
分頁用來控制每頁返回多少數據,在tutorial/settings.py
中添加:
REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 10 }
在tutorial/settings.py
中,把'rest_framework'
添加到
INSTALLED_APPS: INSTALLED_APPS = [ ... 'rest_framework', ]
啟動項目:
python manage.py runserver
訪問http://127.0.0.1:8000/users/
,點擊右上角用超管登錄,即可看到:
終于修復了從博客園復制粘貼到公眾號代碼塊自動換行沒有滾動條的問題,F12看了才知道有個樣式被覆蓋了,加上這句就搞定了:
#topics .postBody pre { white-space: pre !important; }
以上就是用Django REST framework寫API的示例分析,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。