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数组复制拷贝的实现方法
Jun 09 Python
Python的Django框架中if标签的相关使用
Jul 15 Python
Python模块结构与布局操作方法实例分析
Jul 24 Python
从头学Python之编写可执行的.py文件
Nov 28 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
Python实现读取txt文件并转换为excel的方法示例
May 17 Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
python如何实现一个刷网页小程序
Nov 27 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
Mar 10 Python
基于nexus3配置Python仓库过程详解
Jun 15 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
Oct 18 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得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
JavaScript DOM学习第八章 表单错误提示
2010/02/19 Javascript
jQuery源码分析之Event事件分析
2010/06/07 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
判断浏览器的内核及版本号方法汇总
2015/01/05 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
浅谈Vue.use的使用
2018/08/29 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
vue项目刷新当前页面的三种方法
2018/12/04 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
python中引用与复制用法实例分析
2015/06/04 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
工厂厂长岗位职责
2013/11/08 职场文书
体育专业个人求职信范文
2013/12/27 职场文书
《值日生》教学反思
2014/02/17 职场文书
文化与传播毕业生求职信
2014/03/09 职场文书
大学优秀班集体申报材料
2014/05/23 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
应届大专生自荐书
2014/06/16 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
关于Python中进度条的六个实用技巧分享
2022/04/05 Python