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之从if开始语句的征程
Sep 14 Python
python 获取键盘输入,同时有超时的功能示例
Nov 13 Python
Python Flask框架扩展操作示例
May 03 Python
使用Python做垃圾分类的原理及实例代码附源码
Jul 02 Python
elasticsearch python 查询的两种方法
Aug 04 Python
python 模拟银行转账功能过程详解
Aug 06 Python
python实现在多维数组中挑选符合条件的全部元素
Nov 26 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 Python
Python实现电视里的5毛特效实例代码详解
May 15 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 Python
Python可变集合和不可变集合的构造方法大全
Dec 06 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新手上路(四)
2006/10/09 PHP
php explode函数实例代码
2012/02/27 PHP
Server.HTMLEncode让代码在页面里显示为源代码
2013/12/08 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
javascript 函数参数限制说明
2010/11/19 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
js模拟F11页面全屏显示
2019/09/17 Javascript
Vue项目环境搭建详细总结
2019/09/26 Javascript
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
Python configparser模块应用过程解析
2020/08/14 Python
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
中层干部岗位职责
2013/12/18 职场文书
同事打架检讨书
2014/02/04 职场文书
2014年质检员工作总结
2014/11/18 职场文书
python处理json数据文件
2022/04/11 Python