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))