摘要
在本篇博客中,将带领你深入了解如何使用Django REST framework(DRF)来构建一个RESTful API。我们将从安装必需的库开始,逐步深入到模型定义、视图创建、路由设置,直至API的运行和测试。
1. 环境搭建
确保开发环境中已经安装了Python和Django,如果尚未安装Django,可通过以下命令快速安装:
pip install django
2. 核心库安装
DRF是Django的一个扩展,用于快速开发RESTful API。我们需要安装DRF及其相关的支持库:
pip install djangorestframework
pip install markdown
pip install django-filter
pip install django-cors-headers
3. Django设置配置
在settings.py
中添加DRF和CORS支持的配置项:
INSTALLED_APPS = [
...
'rest_framework',
'corsheaders',
...
]
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
...
]
CORS_ORIGIN_WHITELIST = [
'http://localhost:8080', # 根据你的前端项目地址进行修改
]
4. 模型定义与数据库迁移
在models.py
中定义你的数据模型,并执行迁移命令来创建数据库表:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
price = models.DecimalField(max_digits=10, decimal_places=2, null=True)
pub_date = models.DateField()
def __str__(self):
return self.title
执行迁移:
python manage.py makemigrations
python manage.py migrate
5. 视图与序列化器编写
在views.py
中编写序列化器和视图来处理API请求:
from rest_framework.views import APIView
from rest_framework import serializers
from rest_framework.response import Response
from .models import Book
class BookSerializer(serializers.Serializer):
title = serializers.CharField(max_length=100)
price = serializers.DecimalField(max_digits=10, decimal_places=2)
date = serializers.DateField()
def create(self, validated_data):
return Book.objects.create(**validated_data)
class BookView(APIView):
def get(self, request):
books = Book.objects.all()
serializer = BookSerializer(books, many=True)
return Response(serializer.data)
def post(self, request):
serializer = BookSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=400)
class BookDetailView(APIView):
def get(self, request, pk):
try:
book = Book.objects.get(pk=pk)
serializer = BookSerializer(book)
return Response(serializer.data)
except Book.DoesNotExist:
return Response({"error": "Book not found"}, status=404)
6. 路由设置
在urls.py
中设置路由以连接URL和视图:
from django.urls import path, re_path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('book/', views.BookView.as_view(), name='book-list'),
re_path(r'^book/(?P<pk>[0-9]+)/$', views.BookDetailView.as_view(), name='book-detail'),
]
7. 启动Django服务器
运行以下命令来启动Django开发服务器:
python manage.py runserver
8. 使用Postman测试API
使用Postman工具来测试你的API接口:
9. 结语
通过本指南,你应该已经成功地在Django项目中配置了DRF,并能够创建和测试API接口,DRF的强大功能将为你的Web开发带来极大的便利。