Django rest framework基本介绍与代码示例


Posted in Python onJanuary 26, 2018

本文研究的主要是Django rest framework的相关内容,分享了example,具体如下。

Django REST框架是构建Web API的强大而灵活的工具包。

您可能希望使用REST框架的一些原因:

  • Web浏览的API是您的开发人员的巨大的可用性胜利。
  • 验证策略包括OAuth1a和OAuth2的包。
  • 支持ORM和非ORM数据源的序列化。
  • 如果不需要功能更强大的功能,可以自定义一切 - 只需使用基于功能的常规视图。
  • 广泛的文档和极好的社区支持。
  • 由Mozilla,Red Hat,Heroku和Eventbrite等国际知名公司使用和信赖。

Requirements

REST框架需要以下内容:

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

以下软件包是可选的:

  • coreapi(1.32.0+) - 支持模式生成。
  • Markdown(2.1.0+) - 可浏览API的Markdown支持。
  • django-filter(1.0.1+) - 过滤支持。
  • django-crispy-forms - 改进的HTML显示过滤。
  • django-guardian(1.1.1+) - 对象级权限支持。

Installation

Install using pip, including any optional packages you want…

pip install djangorestframework
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',
)

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

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

请注意,URL路径可以是任何您想要的,但您必须在rest_framework的命名空间中包含“rest_framework.urls”。 您可以在Django 1.9+中省略命名空间,REST框架将为您设置。

Example

我们来看一下使用REST框架构建一个简单的模型支持的API的一个简单例子。

我们将创建一个读写API来访问我们项目用户的信息。

REST框架API的任何全局设置都保存在名为REST_FRAMEWORK的单个配置字典中。 首先将以下内容添加到settings.py模块中:

REST_FRAMEWORK = {
  # Use Django's standard `django.contrib.auth` permissions,
  # or allow read-only access for unauthenticated users.
  'DEFAULT_PERMISSION_CLASSES': [
    'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
  ]
}

不要忘了确保你还在你的INSTALLED_APPS中添加了rest_framework。

我们已经准备好创建我们的API了。 这是我们项目的根urls.py模块:

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定义视图行为。
class UserViewSet(viewsets.ModelViewSet):
  queryset = User.objects.all()
  serializer_class = UserSerializer

#路由器提供了一种自动确定URL conf的简单方法。
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)

#使用自动网址路由连接我们的API。
# 另外,我们还包括可浏览的API的登录URL。
urlpatterns = [
  url(r'^', include(router.urls)),
  url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))

您现在可以在http://127.0.0.1:8000/浏览器中打开该API,并查看新的“用户”API。 如果您使用右上角的登录控件,您还可以从系统添加,创建和删除用户。

总结

以上就是本文关于Django rest framework基本介绍的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python使用Tkinter显示网络图片的方法
Apr 24 Python
HTML中使用python屏蔽一些基本功能的方法
Jul 07 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
python正则表达式面试题解答
Apr 28 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
python五子棋游戏的设计与实现
Jun 18 Python
python async with和async for的使用
Jun 20 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
Python上下文管理器全实例详解
Nov 12 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
Mar 06 Python
python datetime处理时间小结
Apr 16 Python
Python实现PS图像调整之对比度调整功能示例
Jan 26 #Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 #Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
Jan 26 #Python
Python实现PS滤镜功能之波浪特效示例
Jan 26 #Python
Python使用pickle模块存储数据报错解决示例代码
Jan 26 #Python
python如何重载模块实例解析
Jan 25 #Python
Python进程间通信Queue实例解析
Jan 25 #Python
You might like
php分页函数
2006/07/08 PHP
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
php自定义session示例分享
2014/04/22 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
php伪静态之APACHE篇
2014/06/02 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
php接口技术实例详解
2016/12/07 PHP
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
2013/07/05 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
jQuery事件详解
2017/02/23 Javascript
jQuery查找dom的几种方法效率详解
2017/05/17 jQuery
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
介绍Python中的fabs()方法的使用
2015/05/14 Python
Python找出list中最常出现元素的方法
2016/06/14 Python
Python中datetime模块参考手册
2017/01/13 Python
Python实现针对中文排序的方法
2017/05/09 Python
python 对dataframe下面的值进行大规模赋值方法
2018/06/09 Python
python pyheatmap包绘制热力图
2018/11/09 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题