Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs。 
为什么要使用REST framework? 
在线可视的API,对于赢得你的开发者们十分有用

验证策略涵盖了OAuth1aOAuth2

- 同时支持ORM非ORM数据源的序列化

- 可以配置各个环节,若无需更多强大的特性,使用一般基于方法(function-based)的视图(views)即可

大量的文档,强力的社区支持

- 大公司如同MozillaEventbrite,也是忠实的使用者

 1.  配置要求

REST framework 有以下的要求:

  • Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6)
  • Django (1.7+, 1.8, 1.9, 1.11)

下面是可选的包:

  • Markdown (2.1.0+) - Markdown为可视化 API 提供了支持.
  • django-filter (0.9.2+) - 过滤支持.
  • django-crispy-forms - 为过滤,提供了改良的HTML呈现.
  • django-guardian (1.1.1+) - 对象层面的权限支持.

 2.  安装部署

使用pip安装框架及所有的你需要的可选依赖包

1
2
3
pip  install  -i  https://pypi.doubanio.com/simple/  --trusted-host pypi.doubanio.com djangorestframework
pip  install  -i  https://pypi.doubanio.com/simple/  --trusted-host pypi.doubanio.com markdown
pip  install  -i  https://pypi.doubanio.com/simple/  --trusted-host pypi.doubanio.com django-filter

…又或者从github上clone该项目

1
git clone git@github.com:tomchristie/django-rest-framework.git

将 'rest_framework' 添加到你的 'INSTALLED_APPS' 设置里

1
2
3
4
INSTALLED_APPS = (
    ...
    'rest_framework',
)

如果你需要使用可视化的API,你也许就需要添加REST Framework的登陆/登出视图。在项目的 urls.py文件里,添加下面的内容:

1
2
3
4
urlpatterns = [
    ...
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
] 

3.  示例

让我们看一个简单用例:如何用REST framework 来搭建一个简单的支持modle的API

我们将创建一个读/写API,来处理我们项目中的用户信息。 
任何REST framework的全局设置,都存放在一个配置字典(dictionary,有些语言如Java中的map)中,名为REST_FRAMEWORK

我们从以下的操作开始,把下面的内容添加到项目的settings.py模块中:

1
2
3
4
5
6
7
REST_FRAMEWORK = {
    # 使用Django的标准`django.contrib.auth`权限管理类,
    # 或者为尚未认证的用户,赋予只读权限.
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
    ]
}

这是项目目录下urls.py模块:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from django.conf.urls import url, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets
 
# Serializers定义了API的表现.
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'is_staff')
 
# ViewSets 定义了 视图(view) 的行为.
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
 
# Routers 提供了一种简单途径,自动地配置了URL。
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)
 
# 使用自动的URL路由,让我们的API跑起来。
# 此外,我们也包括了登入可视化API的URLs。
urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

启动项目 python manage runserver 8000 浏览器 http://127.0.0.1:8000/里,打开新建的’users’ API了

使用右上角的登陆控制,可以对系统用户进行新增和删除操作

最新文章

  1. Tableview中Dynamic Prototypes动态表的使用
  2. Vi指令,随时追加
  3. Java之单例模式
  4. ndk学习8: 编译动态库
  5. WCF----Stream对象限制操作
  6. Windows 域(domain)
  7. 解决git clone时报错:The requested URL returned error: 401 Unauthorized while accessing
  8. 通过命令行连接oracle数据库/进入sql plus
  9. TCP/IP笔记 应用层(3)——HTTP
  10. JQ兼容性问题
  11. BUAA 2014级数据结构第五次上机 二叉树之数组转换广义表
  12. php中for循环的应用1
  13. jmeter3.3测试需要登录的接口(java)
  14. Python爬虫小实践:寻找失踪人口,爬取失踪儿童信息并写成csv文件,方便存入数据库
  15. Python各类图像库的图片读写方式总结
  16. Docker的容器操作
  17. Dynamics CRM 插件Plugin中获取和更新时间字段值的准确转换
  18. Oracle 经典面试题
  19. 多标签分类的结果评估---macro-average和micro-average介绍
  20. 关于php中 json_encode 编码成json数据参数说明

热门文章

  1. java 中String类的常用方法总结,带你玩转String类。
  2. python 评论楼
  3. python--socket/Socketerver并发/udp
  4. Hive:动静态分区
  5. POJ-1860 Currency Exchange---Bellman-Ford判断正环
  6. python常用的一些东西——sys、os等(转)
  7. python判断素数的方法
  8. with工作原理
  9. re模块中的compile函数
  10. 自动化运维:使用flask+mysql+highcharts搭建监控平台