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中functools模块的常用函数解析
Jun 30 Python
Python分治法定义与应用实例详解
Jul 28 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
基于pytorch的lstm参数使用详解
Jan 14 Python
python 读取二进制 显示图片案例
Apr 24 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
Python新手学习raise用法
Jun 03 Python
Python while true实现爬虫定时任务
Jun 08 Python
python logging 重复写日志问题解决办法详解
Aug 04 Python
通过实例解析Python文件操作实现步骤
Sep 21 Python
Python中for后接else的语法使用
May 18 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
pdo中使用参数化查询sql
2011/08/11 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
javascript优先加载笔记代码
2008/09/30 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
jquery使用经验小结
2015/05/20 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
jQuery设计思想
2017/03/07 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
2018/09/14 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
微信小程序音乐播放器开发
2019/11/20 Javascript
vue学习笔记之作用域插槽实例分析
2020/02/01 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
如何进行Linux分区优化
2013/02/12 面试题
中学自我评价
2014/01/31 职场文书
教师评语大全
2014/04/28 职场文书
森林防火标语
2014/06/23 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL
windows安装python超详细图文教程
2021/05/21 Python
Nebula Graph解决风控业务实践
2022/03/31 MySQL