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用来获得图片exif信息的库实例分析
Mar 16 Python
Python中的pass语句使用方法讲解
May 14 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
python中hashlib模块用法示例
Oct 30 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
基于Tensorflow高阶读写教程
Feb 10 Python
Python3实现飞机大战游戏
Apr 24 Python
Python几种常见算法汇总
Jun 02 Python
python实现感知机模型的示例
Sep 30 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 Python
python实现经典排序算法的示例代码
Feb 07 Python
django上传文件的三种方式
Apr 29 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
str_replace只替换一次字符串的方法
2013/04/09 PHP
php读取纯真ip数据库使用示例
2014/01/26 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
JavaScript 学习点滴记录
2009/04/24 Javascript
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
2015/08/04 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
js实现踩五彩块游戏
2020/02/08 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
python求素数示例分享
2014/02/16 Python
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
pandas dataframe添加表格框线输出的方法
2019/02/08 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
python实现远程控制电脑
2019/05/23 Python
Python使用指定端口进行http请求的例子
2019/07/25 Python
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
中专毕业自我鉴定
2013/10/16 职场文书
团员个人的自我评价
2013/12/02 职场文书
技术股东合作协议书
2014/12/02 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
优秀志愿者感言
2015/08/01 职场文书
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS