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

来源:互联网 发布:aa录音软件插件 编辑:程序博客网 时间:2024/05/16 11:48

本文的操作是为了快速建立一个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, Groupfrom rest_framework import serializersclass 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, Groupfrom rest_framework import viewsetsfrom quickstart.serializers import UserSerializer, GroupSerializerclass UserViewSet(viewsets.ModelViewSet):    """    API endpoint that allows users to be viewed or edited.    """    queryset = User.objects.all()    serializer_class = UserSerializerclass 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, includefrom rest_framework import routersfrom tutorial.quickstart import viewsrouter = 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 0
原创粉丝点击