django rest_framework(1)
建立項目
mkdir tutorial
cd tutoial
virtialenv env
source env/bin/activatie
pip install django
pip install djangorestframework
django-admin startproject tutoial
cd tutorial
django-admin startapp quickstart
python manage.py migrate
python manage.py createsuperuser --email [email protected] --username admin
serializer
建立新子產品 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')
我們在這種情況下使用的是超連結關系HyperlinkedModelSerializer。您還可以使用主鍵和其他各種關系,但超連結是一種很好的RESTful設計。
View
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
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
class GroupViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows groups to be viewed or edited.
"""
queryset = Group.objects.all()
serializer_class = GroupSerializer
我們不是編寫多個視圖,而是将所有常見行為組合在一起調用ViewSets。
如果需要,我們可以輕松地将它們分解為單獨的視圖,但使用視圖集可以使視圖邏輯組織良好,并且非常簡潔。
urls
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'))
]
因為我們使用視圖集而不是視圖,是以我們可以通過簡單地使用路由器類注冊視圖集來自動為我們的API生成URL conf。
同樣,如果我們需要更多地控制API URL,我們可以簡單地使用正常的基于類的視圖,并明确地編寫URL conf。
最後,我們将包含預設登入和登出視圖,以便與可浏覽API一起使用。這是可選的,但如果您的API需要身份驗證并且您想要使用可浏覽的API,則非常有用。
pagination
分頁允許您控制每頁傳回的對象數。要啟用它,tutorial/settings.py
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10
}
setting
添加’rest_framework’到INSTALLED_APPS。設定子產品将在tutorial/settings.py
INSTALLED_APPS = (
...
'rest_framework',
)
run
python manage.py runserver