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 相关文章推荐
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 Python
python实现用于测试网站访问速率的方法
May 26 Python
Python制作爬虫采集小说
Oct 25 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
python 中值滤波,椒盐去噪,图片增强实例
Dec 18 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
Oct 14 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入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
基于jquery实现省市联动效果
2015/11/23 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
python快排算法详解
2019/03/04 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
生物化学研究助理员求职信
2013/10/09 职场文书
人事行政主管岗位职责
2013/12/22 职场文书
高中生毕业自我鉴定范文
2013/12/22 职场文书
《姥姥的剪纸》教学反思
2014/02/25 职场文书
春风行动实施方案
2014/03/28 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
医院志愿者活动总结
2015/05/06 职场文书
为自己工作观后感
2015/06/11 职场文书
2016高考寄语集锦
2015/12/04 职场文书
《云雀的心愿》教学反思
2016/02/23 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL