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中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
Windows下PyCharm安装图文教程
Aug 27 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
python的turtle库使用详解
May 10 Python
python创建属于自己的单词词库 便于背单词
Jul 30 Python
简单了解python中的与或非运算
Sep 18 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
提取视频中的音频 Python只需要三行代码!
May 10 Python
python析构函数用法及注意事项
Jun 22 Python
Python必备技巧之字符数据操作详解
Mar 23 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多用户计数器代码
2007/03/11 PHP
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
深入探讨PHP中的内存管理问题
2011/08/31 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
学习YUI.Ext 第七天--关于View&JSONView
2007/03/10 Javascript
Iframe 自适应高度并实时监控高度变化的js代码
2009/10/30 Javascript
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
2011/04/02 Javascript
js验证是否为数字的总结
2013/04/14 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
[00:03]DOTA2新版本PA至宝展示
2014/11/19 DOTA
基于Python的关键字监控及告警
2017/07/06 Python
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
python3实现windows下同名进程监控
2018/06/21 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
python科学计算之scipy——optimize用法
2019/11/25 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
Python实现自动签到脚本功能
2020/08/20 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
小学清明节活动方案
2014/03/08 职场文书
Python标准库之typing的用法(类型标注)
2021/06/02 Python
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android