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 相关文章推荐
浅谈pycharm的xmx和xms设置方法
Dec 03 Python
pandas每次多Sheet写入文件的方法
Dec 10 Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 Python
基于django ManyToMany 使用的注意事项详解
Aug 09 Python
pytorch 实现打印模型的参数值
Dec 30 Python
Python中join()函数多种操作代码实例
Jan 13 Python
Python使用GitPython操作Git版本库的方法
Feb 29 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
keras 如何保存最佳的训练模型
May 25 Python
详细分析Python垃圾回收机制
Jul 01 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
python 下载文件的多种方法汇总
Nov 17 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
德生PL330的评价与改造
2021/03/02 无线电
简化php模板页面中分页代码的解析
2009/02/06 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
Python实现网站文件的全备份和差异备份
2014/11/30 Python
python集合用法实例分析
2015/05/30 Python
Python变量和字符串详解
2017/04/29 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
Html5定位终极解决方案
2020/02/05 HTML / CSS
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
复古服装:RetroStage
2019/05/10 全球购物
英智兴达软件测试笔试题
2016/10/12 面试题
个人优缺点自我评价
2014/01/27 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
升学宴学生答谢词
2015/01/05 职场文书
助学感谢信范文
2015/01/21 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书
redis 限制内存使用大小的实现
2021/05/08 Redis
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis