一、环境安装配置
DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。
1. 安装DRF
pip install djangorestframework
2. 添加rest_framework应用
我们利用在Django框架学习中创建的demo工程,在settings.py
的INSTALLED_APPS中添加'rest_framework'
。
INSTALLED_APPS = [
...
'rest_framework',
]
接下来就可以使用DRF进行开发了。
二、基本使用
1. 创建序列化器
在booktest应用中新建serializers.py用于保存该应用的序列化器。
创建一个BookInfoSerializer用于序列化与反序列化。
class BookInfoSerializer(serializers.ModelSerializer):
"""图书序列化器"""
class Meta:
model = BookInfo
fields = '__all__'
- model 指明该序列化器处理的数据字段从模型类BookInfo参考生成
- fields 指明该序列化器包含模型类中的哪些字段,'all’指明包含所有字段
2. 编写视图
在booktest应用的views.py中创建视图BookInfoViewSet,这是一个视图集合。
from rest_framework.viewsets import ModelViewSet
from booktest.serializers import BookInfoSerializer
from booktest.models import BookInfo
class BookInfoViewSet(ModelViewSet):
queryset = BookInfo.objects.all()
serializer_class = BookInfoSerializer
- queryset 指明该视图集在查询数据时使用的查询集
- serializer_class 指明该视图在进行序列化或反序列化时使用的序列化器
3. 定义路由
在books应用的urls.py中定义路由信息。
from django.urls import path
from rest_framework.routers import DefaultRouter
from . import views
# urlpatterns是被django自动识别的路由列表变量
urlpatterns = [
# 每个路由信息都需要使用url函数来构造
# url(路径, 视图)
path(r'hello/', views.books),
path(r'index/', views.index),
path(r'form/', views.BookView.as_view())
# path(r'book/', views.BookView.post),
]
router = DefaultRouter() # 可以处理视图的路由器
router.register('books', views.BookInfoViewSet, base_name='books') # 向路由器中注册视图集
urlpatterns += router.urls # 将路由器中的所以路由信息追到到django的路由列表中
4. 运行测试
python manage.py runserver
1)访问路由:127.0.0.1:8000/books
2)访问路由:127.0.0.1:8000/books/books