django rest framework之二:入门-APIView

官方文档链接 : http://www.django-rest-framework.org/#tutorial

一、安装

要求

REST框架需要以下内容:

  • Python(2.7,3.2,3.3,3.4,3.5,3.6)
  • Django(1.10,1.11,2.0)

以下软件包是可选的:

安装使用pip,包括您想要的任何可选软件包.

pip install djangorestframework pip install markdown # Markdown support for the browsable API. pip install django-filter # Filtering support

二、基本使用

1.配置

添加'rest_framework'到您的INSTALLED_APPS设置。

INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ...
    'rest_framework',        # 需要使用的drf模块
    ...
]

2.设置路由

如果您打算使用可浏览的API,您可能还需要添加REST框架的登录和注销视图。将以下内容添加到您的根urls.py文件。

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

请注意,URL路径可以是任何你想要的

3.编写serializers(序列化器)

序列化器类似于 Django 中的 forms,只要的作用是对你从 model 中获得的结果进行校验、序列化等。所以他的 字段要跟你的 结果中的字段保持一致 。

每个 app 都应该有一个 serializers.py 文件 用来专门做该 app 的序列化处理, 参考 forms 。

from rest_framework import serializers



class ReatappSerializer(serializers.Serializer):

name = serializers.CharField(required=True, max_length=100)

click_num = serializers.IntegerField(default=0)

4.编写View(视图)

在视图中,先要导入 APIView ,让编写的视图类继承自 APIView 类,

再导入写好的 序列化器 ,用来对model 中的结果进行序列化

最后 导入 Response 用来返回数据。

from .serializers import ReatappSerializer

from rest_framework.views import APIView

from rest_framework.response import Response



class SnippetListView(APIView):



def get(self, request, format=None):

snippets = Snippet.objects.all() # 查询model 中的数据

# 将查询结果放入序列化器,获取序列化后的结果

snippets_serializer = ReatappSerializer(snippets, many=True)

# 把序列化后的结果中的 data 用 Response 方式返回。

return Response(snippets_serializer.data)

由下图源码可见, APIView 其实是继承自 View 这个类。

5.为视图配置 url

APIView 视图的配置跟 View 一样,如下,先导入视图,再配置路由

from restapp.views import SnippetListView

添加 :

url(r'^snippetList/$',SnippetListView.as_view(),name='SnippetList'),

到此为止,restful api 已经完成,访问 127.0.0.1:8000/snippetList 就可以看到一个页面中有

我们需要的数据(出现在序列化器里面的字段才能看得到!!!)。

猜你喜欢

转载自blog.csdn.net/qq_26128879/article/details/82431566