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调用cmd命令行制作刷博器
Jan 13 Python
简述Python中的面向对象编程的概念
Apr 27 Python
Python捕捉和模拟鼠标事件的方法
Jun 03 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
flask中使用蓝图将路由分开写在不同文件实例解析
Jan 19 Python
python实现黑客字幕雨效果
Jun 21 Python
pytorch AvgPool2d函数使用详解
Jan 03 Python
python 实现 hive中类似 lateral view explode的功能示例
May 18 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 Python
python实现学生成绩测评系统
Jun 22 Python
解决pip install psycopg2出错问题
Jul 09 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/01/10 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
使用js检测浏览器的实现代码
2013/05/14 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
javascript父子页面通讯实例详解
2015/07/17 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
vue组件实例解析
2017/01/10 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
Python 的 with 语句详解
2014/06/13 Python
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
Python实现的批量修改文件后缀名操作示例
2018/12/07 Python
python redis 删除key脚本的实例
2019/02/19 Python
浅谈Python中(&,|)和(and,or)之间的区别
2019/08/07 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
python双向链表原理与实现方法详解
2019/12/03 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
销售文员岗位职责
2013/11/29 职场文书
求职自荐信
2013/12/14 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
读书笔记怎么写
2015/07/01 职场文书
优秀员工演讲稿
2019/06/21 职场文书
Python anaconda安装库命令详解
2021/10/16 Python
聊聊Python String型列表求最值的问题
2022/01/18 Python
css样式important规则的正确使用方式
2022/06/10 HTML / CSS