学习使用"Django REST framework"打造RESTful API接口——第一节 quickstart

本文的操作是为了快速建立一个Django项目的REST接口,然后看看效果,让你更有信心地使用这个框架。里面有很多新的概念在后面会慢慢介绍。

准备开发环境

本人平时上班时使用的是windows进行开发。这里介绍windows下的开发环境,MacOS下也是类似的。

本文假设大家都已经比较熟悉地掌握Python和Django,至少可以把Django服务起起来,自己做过一些小型网站。

使用Django REST framework来设计RESTful API,因为这个框架里面用到了six模块,Django1.4.5以上的版本才包含这个模块,所以我使用的是Django 1.4.16。安装方法:pip install django==1.4.16。

安装Django REST framework:pip install djangorestframework

Python: 使用2.7

IDE选择了PyCharm,版本是3.4。


1 创建项目

用PyCharm创建项目,名字为rest。位置自己设置,项目类型当然是Django,编译器就选择自己电脑上安装的Python 2.7.6


点“OK”以后PyCharm要求你创建一个app,我们创建一个叫"quickstart"的app。

创建完以后,项目的结构就是这个样子的:


这个里面可以创建数据库里的表了,Django数据库怎么配置可以参考官方文档。REST framework的官网上的例子用的是Django 1.7, 所以使用python manage.py migrate来生成model对应的表,然后用python manage.py createsuperuser创建超级用用户。 但是我用的是Django 1.4.16,所以命令不一样。我们在PyCharm里面选择Tools->run manage.py task,然后输入syncdb。这样就会创建表,并且提示你创建一个超级用户。


到此为止项目已经创建完成。


2 Serializers 序列化

在创建序列化,在此之前我们先创建一个model文件,路径是rest/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')
我们这里用到了一个relationship叫HyperlinkedModelSerializer,你也可以使用其他的relationship,但是hyperlinked relations是比较符合RESTful 设计规范的。


3 Views 视图

设计一个视图来展示我们的API接口。创建一个文件,路径是rest/quickstart/views.py

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
这里用了ViewSet,把所有功能相似的view放在一起。其他的地方为什么这样写可以暂时不管。


4 URLs

现在要添加url,修改rest/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)

# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browseable API.
urlpatterns = +[
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
要注意,这里的urlpatterns要用+=,因为你很可能还有自己其他的一些 urlpatterns参数,不能完全像官网那样用等于号。


5 Settings

修改rest/settings.py,添加一个rest_framework APP和一个REST_FRAMEWORK 变量。

INSTALLED_APPS = (
    ...
    'rest_framework',
)

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

6 测试接口

现在可以启动项目,测试一下接口了。在浏览器上输入http://127.0.0.1:8000/users/,看到了user的API接口。






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值