由于用了HyperlinkedModelSerializer,SnippetSerializer和UserSerializer的url字段默认指向的是'{model_name}-detail' url pattern,这是DRF定义的,在示例中就是'snippet-detail' 和'user-detail'。新增的highlight字段和url字段是一样的类型,它指向的是'snippet-highlight',而不是'snippet-detail'。
修改url pattern既然已经提到了url pattern,那么在snippets/urls.py中修改一下:
from django.urls import path from rest_framework.urlpatterns import format_suffix_patterns from snippets import views # API endpoints urlpatterns = format_suffix_patterns([ path('', views.api_root), path('snippets/', views.SnippetList.as_view(),), path('snippets/<int:pk>/', views.SnippetDetail.as_view(),), path('snippets/<int:pk>/highlight/', views.SnippetHighlight.as_view(),), path('users/', views.UserList.as_view(),), path('users/<int:pk>/', views.UserDetail.as_view(),) ])name就是在serializers.py和views.py中用到的。
添加分页REST设计基本原则提到了:处理好分页。DRF添加分页的方式很简单,编辑tutorial/settings.py文件:
REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 10 } 东方说我之前是在学SpringBoot的时候了解过RESTful API的超链接API,文章开头的那一段介绍就是当时写的笔记,DRF提供了HyperlinkedModelSerializer来实现,还是比较好理解的,其中的细节需要在实战中再多多熟悉。
参考资料:
https://www.django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis/
https://spring.io/guides/tutorials/rest/