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 除法小技巧
Sep 06 Python
用Python写的图片蜘蛛人代码
Aug 27 Python
Python语言实现百度语音识别API的使用实例
Dec 13 Python
Python面向对象之继承代码详解
Jan 29 Python
tensorflow输出权重值和偏差的方法
Feb 10 Python
django2笔记之路由path语法的实现
Jul 17 Python
python实现广度优先搜索过程解析
Oct 19 Python
python 微信好友特征数据分析及可视化
Jan 07 Python
Python 实现RSA加解密文本文件
Dec 30 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 Python
Python实现天气查询软件
Jun 07 Python
python实现A*寻路算法
Jun 13 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 文件状态缓存带来的问题
2008/12/14 PHP
PHP Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
21个值得收藏的Javascript技巧
2014/02/04 Javascript
jquery ajax,ashx,json的用法总结
2014/02/12 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
python中的turtle库函数简单使用教程
2018/07/23 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
Python实现语音识别和语音合成功能
2019/09/20 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
python 实现图片批量压缩的示例
2020/12/18 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
python中time.ctime()实例用法
2021/02/03 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
劳动竞赛口号
2014/06/16 职场文书
房屋租赁协议书
2014/10/18 职场文书
党员民主评议个人总结
2014/10/20 职场文书
学校2014年度工作总结
2014/12/06 职场文书
护士年终考核评语
2014/12/31 职场文书
用人单位聘用意向书
2015/05/11 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers