Django RESF framework(官方教程)

快速起步

尝试创建一简单 API 对 users 和groups进行查看修改操作.

项目起步

创建一项目,其名tutorial, t之后建一appquickstart.

# Set up a new project
django-admin.py startproject tutorial
cd tutorial

# Create a virtualenv to isolate our package dependencies locally
virtualenv env
source env/bin/activate  # On Windows use `env\Scripts\activate`

# Install Django and Django REST framework into the virtualenv
pip install django
pip install djangorestframework

# Create a new app
python manage.py startapp quickstart

之后配置数据库并进行syncdb操作. 如果使用的是 SQLite, 那么你可以配置tutorial/settings.py如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'database.sql',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': ''
    }
}

进行数据库更新:

python manage.py syncdb

一旦配置好数据库并同步数据,之后就可以打开app目录进行编码了...

序列化

首先我们将在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')

Notice 我们使用远程连接进行操作HyperlinkedModelSerializer. 当然你可以使用主键和其他关系,但是hyperlinking是一种好的restful设计.

视图

Right, 之后我们将写更好的视图. 打开quickstart/views.py继续coding.

from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from quickstart.serializers import UserSerializer, GroupSerializer


class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all()
    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

Okay, 现在布置API URLs. 转到tutorial/urls.py...

from django.conf.urls import patterns, url, include
from rest_framework import routers
from 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 browseable API.
urlpatterns = patterns('',
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
)

Because we're using viewsets instead of views, we can automatically generate the URL conf for our API, by simply registering the viewsets with a router class.

Again, if we need more control over the API URLs we can simply drop down to using regular class based views, and writing the URL conf explicitly.

Finally, we're including default login and logout views for use with the browsable API. That's optional, but useful if your API requires authentication and you want to use the browsable API.

Settings设置

我们将设置全局setting. 我们显示分页, 我们希望API只能访问admin. setting设置到tutorial/settings.py

INSTALLED_APPS = (
    ...
    'rest_framework',
)

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',),
    'PAGINATE_BY': 10
}

Okay, 做好了.


测试我们的API

现在测试我们写的API. 让我们从浏览器开始.

python ./manage.py runserver

我们可以接触api通过命令行使用如curl这样的...

bash: curl -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/ 
{
    "count": 2, 
    "next": null, 
    "previous": null, 
    "results": [
        {
            "email": "admin@example.com", 
            "groups": [], 
            "url": "http://127.0.0.1:8000/users/1/", 
            "username": "admin"
        }, 
        {
            "email": "tom@example.com", 
            "groups": [                ], 
            "url": "http://127.0.0.1:8000/users/2/", 
            "username": "tom"
        }
    ]
}

或直接使用浏览器...

Quick start image

太easy了!

I如果想深入rest就请移驾the tutorial, 或者API guide.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值