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应用程序在windows下不出现cmd窗口的办法
May 29 Python
Python tornado队列示例-一个并发web爬虫代码分享
Jan 09 Python
Python两台电脑实现TCP通信的方法示例
May 06 Python
让你的Python代码实现类型提示功能
Nov 19 Python
Python enumerate函数遍历数据对象组合过程解析
Dec 11 Python
使用matplotlib绘制图例标签中带有公式的图
Dec 13 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
python 实现人和电脑猜拳的示例代码
Mar 02 Python
vue常用指令代码实例总结
Mar 16 Python
Django QuerySet查询集原理及代码实例
Jun 13 Python
Python如何将装饰器定义为类
Jul 30 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
Jul 31 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将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
JavaScript十大取整方法实例教程
2020/12/03 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
Python抓取京东图书评论数据
2014/08/31 Python
tensorflow 获取模型所有参数总和数量的方法
2018/06/14 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
python 元组的使用方法
2020/06/09 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
艺术应用与设计个人的自我评价
2013/11/23 职场文书
教师实习自我鉴定
2013/12/13 职场文书
迅雷Cued工作心得体会
2014/01/27 职场文书
道路交通安全实施方案
2014/03/12 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL