django[九] - django rest framework

Django rest framework介绍

Django REST framework 是用于构建Web API 的强大而灵活的工具包。

我们可能想使用REST框架的一些原因:

  • Web浏览API对于开发人员来说是一个巨大的可用性。
  • 认证策略包括OAuth1a和OAuth2的包。
  • 支持ORM和非ORM数据源的序列化。
  • 如果你不需要更强大的功能,就可以使用常规的基于功能的视图。
  • 广泛的文档和良好的社区支持。
  • 包括Mozilla、Red Hat、Heroku和Eventbrite在内的国际知名公司使用和信任。

 

安装

Requirements

REST framework requires the following:

Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6)
Django (1.8, 1.9, 1.10, 1.11)

  

Installation

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

  

Add 'rest_framework' to your INSTALLED_APPS setting.

INSTALLED_APPS = (
    ...
    'rest_framework',
)

  

实例

 

urls.py

# coding:utf-8
from django.conf.urls import patterns, include, url
from japi.views import *
from rest_framework.routers import DefaultRouter

router = DefaultRouter()     # 动态路由,不用再写明细的路由了
router.register(r'assets', AssetViewSet,base_name='test_assets') # 把对应的视图对象加到路由里面,视图里面的方法就是可访问的路由名字

urlpatterns = patterns('',
    url(r'^', include(router.urls)),
    url(r'^test/$', UserView.as_view(), name='test_api_asset_list'),
)

  

serializers.py

# -*- coding: utf-8 -*-
# @Author: gaotao
# @Date:   2018-05-25 11:13:31
# @Last Modified by:   richardzgt​
# @Last Modified time: 2018-06-22 16:18:23
# Purpose: 


# 三种序列化模式,推荐ModelSerializer,即模型序化
from rest_framework.serializers import Serializer  
from rest_framework.serializers import ModelSerializer
from rest_framework.serializers import HyperlinkedModelSerializer
from jasset.models import Asset

class AssetSerializer(ModelSerializer):
    class Meta:
        model = Asset            
        fields = [ field.name for field in Asset._meta.fields ] # 全部fields
        depth = 5  
       # depth = 0 或 1, 只显示FK的PK, 如果=2,可以显示FK对象的字段,比如下面的group外键;
        # [{"id":1,"username":"Lena",..."group":{"id":1,"title":"A组"}},
        # 如果外键嵌套很多,depth深度过深可能会影响性能。。

  

views.py

# 测试用例

class UserView(APIView):
    def get(self, request):
        user = User.objects.all()
        user_id = request.GET.get("id", '')
        user_ids = request.GET.getlist("ids", '')
        return json_returner(0,"id:[%s] - ids:%s" % (user_id,user_ids))

  

 

posted @ 2018-05-25 17:25  richardzgt  阅读(135)  评论(0编辑  收藏  举报