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中使用成员运算符的示例
May 13 Python
实例Python处理XML文件的方法
Aug 31 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
基于hashlib模块--加密(详解)
Jun 21 Python
python判断一个集合是否为另一个集合的子集方法
May 04 Python
Python flask框架post接口调用示例
Jul 03 Python
matplotlib实现显示伪彩色图像及色度条
Dec 07 Python
TensorFlow tensor的拼接实例
Jan 19 Python
Python venv虚拟环境配置过程解析
Jul 08 Python
Python中使用Lambda函数的5种用法
Apr 01 Python
对PyTorch中inplace字段的全面理解
May 22 Python
详解Python描述符的工作原理
Jun 11 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
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
详解Django中Request对象的相关用法
2015/07/17 Python
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
详解python中的lambda与sorted函数
2020/09/04 Python
python各种excel写入方式的速度对比
2020/11/10 Python
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
股份合作协议书
2014/04/12 职场文书
博士生求职信
2014/07/06 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
经营目标责任书
2015/05/08 职场文书
使用numpy nonzero 找出非0元素
2021/05/14 Python
浅谈Node的内存泄露问题
2022/05/06 NodeJs