快速入门
创建project,创建app,之后
同步数据库:
python manage.py migrate
创建超级用户:
python manage.py createsuperuser
Serializers
第一步,我们需要定义一些serializers。
我们创建servrializers.py在app根文件夹下面。
Serializers的作用是:代表数据。
from django.contrib.auth.models import User,Group
from rest_framework import serializers
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = "__all__"
class GroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Group
fields = ('url', 'name')
注意我们使用的是hyperlinked关系在现在这里,你也可以使用私有的,或者多种关系,但是要知道hyperlinked是一种很好的RESTful 设计。
Views
对的,然后我们最好写一些views。打开app根目录的view.py。
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from app04.serializers import UserSerializer, GroupSerializer
class UserViewSet(viewsets.ModelViewSet):
"""
API endpoint 允许users被查看和编辑
"""
user_queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
class GroupViewSet(viewsets.ModelViewSet):
queryset = Group.objects.all()
serializer_class = GroupSerializer
比起写多个views,我们集中了所有的常用操作在ViewSet中。
我们可以轻易地将这些分开为多个views如果需要,但是这种比较简明。
URLs
我们需要在项目根目录的urls.py中写,注意不是app的根目录。
from django.conf.urls import url,include
from rest_framework import routers
from app04 import views as app04_views
router = routers.DefaultRouter()
router.register(r'users', app04_views.UserViewSet)
router.register(r'groups', app04_views.GroupViewSet)
urlpatterns = [
...
url(r'^api-auth/', include("rest_framework.urls", namespace="rest_framework")),
]
因为我们使用的是viewsets而不是views,我们可以自动地生成URL conf从我们的API,简单地使用router去register viewsets。
如果我们需要对API URLs更多地控制,我们可以使用通常的views,明确地写URL 配置。
Settings
在settings中打开分页:
INSTALLED_APPS = (
...
'rest_framework',
)
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAdminUser',
],
'PAGE_SIZE': 10
}