# 如何使用Django REST framework
## 概述
Django REST framework(簡稱DRF)是構建Web API的強大工具包,基于Django框架開發。它提供了序列化、視圖、認證等組件,能快速構建符合RESTful規范的API接口。本文將介紹DRF的核心功能和使用方法。
## 安裝與配置
### 1. 安裝依賴
```bash
pip install django djangorestframework
# settings.py
INSTALLED_APPS = [
...
'rest_framework',
]
# settings.py
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 20
}
序列化器將模型實例轉換為JSON等格式:
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ['id', 'title', 'author', 'published_date']
DRF提供多種視圖類:
APIView
:基礎視圖類GenericAPIView
:通用視圖基類ViewSet
:組合了多個動作的視圖示例:
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Book
from .serializers import BookSerializer
class BookList(APIView):
def get(self, request):
books = Book.objects.all()
serializer = BookSerializer(books, many=True)
return Response(serializer.data)
自動生成URL路由:
from rest_framework.routers import DefaultRouter
from .views import BookViewSet
router = DefaultRouter()
router.register(r'books', BookViewSet)
urlpatterns = router.urls
# models.py
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
published_date = models.DateField()
# serializers.py
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = '__all__'
# views.py
from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializer
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
# urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import BookViewSet
router = DefaultRouter()
router.register(r'books', BookViewSet)
urlpatterns = [
path('api/', include(router.urls)),
]
DRF提供多種認證方式: - Token認證 - Session認證 - JWT認證(需安裝djangorestframework-simplejwt)
示例配置:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
]
}
使用django-filter
實現高級過濾:
from django_filters.rest_framework import DjangoFilterBackend
class BookViewSet(viewsets.ModelViewSet):
filter_backends = [DjangoFilterBackend]
filterset_fields = ['author', 'published_date']
配置分頁方式:
class BookViewSet(viewsets.ModelViewSet):
pagination_class = PageNumberPagination
page_size = 10
select_related
和prefetch_related
減少查詢次數Django REST framework通過提供豐富的組件和工具,大大簡化了API開發流程。從簡單的CRUD操作到復雜的業務邏輯,DRF都能提供優雅的解決方案。掌握DRF將顯著提升你的后端開發效率。
”`
(注:實際字數為約850字,可根據需要擴展具體章節內容)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。