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 + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
Jul 14 Python
python矩阵的转置和逆转实例
Dec 12 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
Python安装Flask环境及简单应用示例
May 03 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
Dec 20 Python
简单了解python filter、map、reduce的区别
Jan 14 Python
python使用numpy实现直方图反向投影示例
Jan 17 Python
pycharm 对代码做静态检查操作
Jun 09 Python
keras.utils.to_categorical和one hot格式解析
Jul 02 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
Dec 01 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 Python
Python可视化神器pyecharts绘制地理图表
Jul 07 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中防止伪造跨站请求的小招式
2011/09/02 PHP
PHP获取MAC地址的函数代码
2011/09/11 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
javascript常用的方法整理
2015/08/20 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
学习Vue组件实例
2018/04/28 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
Python实现批量下载文件
2015/05/17 Python
Python中isnumeric()方法的使用简介
2015/05/19 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
python抓取网页中链接的静态图片
2018/01/29 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
司机岗位职责
2013/11/15 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
销售经理岗位职责
2015/01/31 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
Python数据分析入门之数据读取与存储
2021/05/13 Python
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技