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 异常处理总结
Oct 18 Python
python django 实现验证码的功能实例代码
May 18 Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 Python
Python实现的单向循环链表功能示例
Nov 10 Python
Python深度优先算法生成迷宫
Jan 22 Python
Python实现简单遗传算法(SGA)
Jan 29 Python
关于python多重赋值的小问题
Apr 17 Python
基于python操作ES实例详解
Nov 16 Python
Pytorch的mean和std调查实例
Jan 02 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
Python入门学习之类的相关知识总结
May 25 Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 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
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
微信小程序 转发功能的实现
2017/08/04 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
[05:26]2014DOTA2西雅图国际邀请赛 iG战队巡礼
2014/07/07 DOTA
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
基于python中的TCP及UDP(详解)
2017/11/06 Python
Python打印“菱形”星号代码方法
2018/02/05 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
Django 实现图片上传和下载功能
2020/12/31 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
薇姿法国官网:Vichy法国
2021/01/28 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
C# Debug和Testing相关面试题
2015/10/25 面试题
个人整改措施书面材料
2014/10/24 职场文书
三八节活动简报
2015/07/20 职场文书
退伍军人感言
2015/08/01 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP