一個小專案帶你瞭解rest framework
阿新 • • 發佈:2019-01-31
這邊宣告一下,以下是參考官方文件來的。
新建專案
新建名為dimples的django專案
在其中建立一個名為astart的APP:
新建目錄
# 新建目錄
mkdir dimples
cd dimples
新建虛擬環境
virtualenv env
env\Scripts\activate
在虛擬環境中安裝依賴
pip install django
pip install djangorestframework
新建專案
django-admin.py startproject dimples .
cd dimples
django-admin.py startapp astart
cd ..
建立表
python manage.py migrate
建立管理員
python manage.py createsuperuser
序列化
serializers只做一件事,json化model物件首先建立一個檔案dimples/astart/來編寫序列化相關的程式碼:
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: 建立超連結關係。
dimples/astart/
編寫檢視檔案
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from dimples.astart.serializers import UserSerializer, GroupSerializer
class UserViewSet(viewsets.ModelViewSet):
"""
檢視、編輯使用者的介面
"""
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
class GroupViewSet(viewsets.ModelViewSet):
"""
檢視、編輯組的介面
"""
queryset = Group.objects.all()
serializer_class = GroupSerializer
ViewSets:封裝許多常見的操作,減少重複程式碼。 保持程式碼的簡潔以及邏輯的清晰。
from django.conf.urls import url, include
from rest_framework import routers
from dimples.astart import views
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)
# 使用URL路由來管理我們的API
# 另外新增登入相關的URL
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
使用了ViewSets可以通過使用Router類來自動生成URL配置資訊。
Settings
啟用分頁功能以及只有管理員能訪問
INSTALLED_APPS = (
...
'rest_framework',
)
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',),
'PAGE_SIZE': 10
}
測試
Terminal中輸入
python ./manage.py runserver
使用命令列工具訪問API
http -a dimples:111111 http://127.0.0.1:8000/users/
(venv) C:\Users\Administrator\PycharmProjects\dimples>http -a dimples:111111 http://127.0.0.1:8000/user/
HTTP/1.0 200 OK
Allow: GET, HEAD, OPTIONS
Content-Length: 91
Content-Type: application/json
Date: Wed, 20 Sep 2017 11:31:17 GMT
Server: WSGIServer/0.1 Python/2.7.13
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN
{
"groups": "http://127.0.0.1:8000/user/groups/",
"users": "http://127.0.0.1:8000/user/users/"
}
確保登入狀態下開啟瀏覽器 127.0.0.1:8000/users/