django rest framework我的學習筆記(二)————Quickstart

Quickstart

咱們將會建立一個簡單的API,來讓管理員可以查看和編輯Users和Groups。python

項目開始

建立一個新的項目叫 tutorial,而後建立一個app叫quickstart.數據庫

# 建立項目目錄
mkdir tutorial
cd tutorial

# 建立虛擬環境,並進入虛擬環境中
virtualenv env
source env/bin/activate

# 安裝django 和 REST framework
pip install django
pip install djangorestframework

# 建立項目和app
django-admin.py startproject tutorial
cd tutorial
django-admin.py startapp quickstart
cd ..

建立數據庫:django

python manage.py migrate

建立一個超級用戶admin,密碼是password123。咱們將會在接下來的例子中使用這個帳戶。api

python manage.py createsuperuser

Serializers

首先,咱們將去定義一些serializer。建立一個新的模塊叫 tutorual/quickstart/serializers.pyapp

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.HyperlinkModelSerializer):
    class Meta:
        model = Group
        fields = ('url','name')

注意 這裏咱們使用 hyperlinked(HyperlinkedModelSerializer)。你也能夠使用primary key和各式各樣其餘的關係。可是 hyperlinking是一個好的RESTful設計。ui

Views

立刻,咱們將寫一些views.打開 tutorial/quickstart/views.pyurl

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容許查看和編輯 用戶
    """
    queryset = User.object.all().order_by('-data_joined')
    serializer_class = UserSerializer
    
    
class GroupViewSet(Viewsets.ModelViewSet):
    """
    API容許查看和編輯 組
    """
    queryset = Group.objects.all()
    serializer_class = GroupSerializer

將有共同行爲的各式各樣的View歸爲一類並稱之爲 ViewSets
若是咱們須要,咱們能夠輕易的拆分這些View,可是使用 viewsets將會使View邏輯看起來更加整潔和有組織性。spa

URLs

如今,咱們來寫咱們的API URLs.在 tutorual/urls.py設計

from django.conf.urls import url, include
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)

urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

由於咱們使用了viewsets來替代views,咱們可以自動產生咱們API的URL,只要在router中簡單的註冊一下咱們的viewsets。
一樣,若是咱們須要更多的控制咱們的API URLs,咱們可以在簡單的在下面使用常規的 class-based views,並寫入url conf中。
最後,咱們使用 browsable API來導入默認的登陸登出Views.這是可選的。rest

Settings

咱們還須要設置一些全局變量。咱們想啓用分頁和API只有Admin用戶可以調用。這些設置都在 tutorial/settings.py中:

INSTALLED_APPS = (
    ...
    'rest_framework',
)

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAdminUser',
    ],
    'PAGE_SIZE': 10
}
相關文章
相關標籤/搜索