Django REST Framework(DRF)教程:快速入门
我们将创建一个简单的允许管理员用户查看和编辑系统中的用户和组的API。
项目设置
创建一个名为 tutorial
的新django项目,然后启动一个名为 quickstart
的新app。
# 创建项目目录mkdir tutorial
cd tutorial# 创建一个virtualenv来隔离我们本地的包依赖关系virtualenv env
source env/bin/activate # 在Windows下使用 `env\Scripts\activate`# 在创建的虚拟环境中安装 Django 和 Django REST frameworkpip install django
pip install djangorestframework# 创建一个新项目和一个单个应用django-admin.py startproject tutorial . # 注意结尾的'.'符号cd tutorial
django-admin.py startapp quickstart
cd ..
现在第一次同步你的数据库:
python manage.py migrate
我们还要创建一个名为 admin
的初始用户,密码为 password123
。我们稍后将在该示例中验证该用户。
python manage.py createsuperuser
等你建立好一个数据库和初始用户,并准备好开始。打开应用程序的目录,我们就要开始编码了…
Serializers
首先我们要定义一些序列化程序。我们创建一个名为 tutorial/quickstart/serializers.py
的文件,来用作我们的数据表示。
from django.contrib.auth.models import User, Group
from rest_framework import serializersclass UserSerializer(serializers.HyperlinkedModelSerializer):class Meta:model = Userfields = ('url', 'username', 'email', 'groups')class GroupSerializer(serializers.HyperlinkedModelSerializer):class Meta:model = Groupfields = ('url', 'name')
请注意,在这个例子中我们用到了超链接关系,使用 HyperlinkedModelSerializer
。你还可以使用主键和各种其他关系,但超链接是好的RESTful设计。
Views
好了,我们接下来再写一些视图。打开 tutorial/quickstart/views.py
文件开始写代码了。
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from tutorial.quickstart.serializers import UserSerializer, GroupSerializerclass UserViewSet(viewsets.ModelViewSet):"""允许用户查看或编辑的API路径。"""queryset = User.objects.all().order_by('-date_joined')serializer_class = UserSerializerclass GroupViewSet(viewsets.ModelViewSet):"""允许组查看或编辑的API路径。"""queryset = Group.objects.all()serializer_class = GroupSerializer
不再写多个视图,我们将所有常见行为分组写到叫 ViewSets
的类中。
如果我们需要,我们可以轻松地将这些细节分解为单个视图,但是使用viewsets可以使视图逻辑组织良好,并且非常简洁。
URLs
好的,现在我们在tutorial/urls.py
中开始写连接API的URLs。
from django.conf.urls import url, include
from rest_framework import routers
from tutorial.quickstart import viewsrouter = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)# 使用自动URL路由连接我们的API。
# 另外,我们还包括支持浏览器浏览API的登录URL。
urlpatterns = [url(r'^', include(router.urls)),url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
因为我们使用的是viewsets而不是views,所以我们可以通过简单地使用路由器类注册视图来自动生成API的URL conf。
再次,如果我们需要对API URL进行更多的控制,我们可以简单地将其拉出来使用常规基于类的视图,并明确地编写URL conf。
最后,我们将包括用于支持浏览器浏览的API的默认登录和注销视图。这是可选的,但如果您的API需要身份验证,并且你想要使用支持浏览器浏览的API,那么它们很有用。
Settings
我们也想设置一些全局设置。我们想打开分页,我们希望我们的API只能由管理员使用。设置模块都在 tutorial/settings.py
中。
INSTALLED_APPS = (...'rest_framework',
)REST_FRAMEWORK = {'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.IsAdminUser',],'PAGE_SIZE': 10
}
好了,我们完成了。
测试我们的API
我们现在可以测试我们构建的API。我们从命令行启动服务器。
python manage.py runserver
我们现在可以从命令行访问我们的API,使用诸如 curl
…
bash: curl -H 'Accept: application/json; indent=4' -u admin:password123 http://127.0.0.1:8000/users/
{"count": 2,"next": null,"previous": null,"results": [{"email": "admin@example.com","groups": [],"url": "http://127.0.0.1:8000/users/1/","username": "admin"},{"email": "tom@example.com","groups": [ ],"url": "http://127.0.0.1:8000/users/2/","username": "tom"}]
}
或者使用 httpie,命令行工具…
bash: http -a admin:password123 http://127.0.0.1:8000/users/HTTP/1.1 200 OK
...
{"count": 2,"next": null,"previous": null,"results": [{"email": "admin@example.com","groups": [],"url": "http://localhost:8000/users/1/","username": "paul"},{"email": "tom@example.com","groups": [ ],"url": "http://127.0.0.1:8000/users/2/","username": "tom"}]
}
或直接通过浏览器,转到URL http://127.0.0.1:8000/users/
…
如果您正在使用浏览器,请确保使用右上角进行登录。
非常棒!就是这么简单!
参考链接:https://www.django.cn/course/show-20.html
Django REST Framework(DRF)教程:快速入门相关推荐
- 最简单的dubbo教程-快速入门《一》
最简单的dubbo教程-快速入门<一> 目录(?)[+] 所需环境 zookeeper作为dubbo的注册中心,dubbo服务提供方和消费方都需要在zookeeper注册中心注册. 可参考 ...
- django html5 关系,Django REST FrameWork中文教程5:关系和超链接API
目前我们的API中的关系是用主键表示的.我们将通过使用超链接来提高我们API的内部联系. 为我们的API创建一个根路径 现在我们有'snippets'和'users'的路径,但是我们的API没有一个入 ...
- Spring MVC 教程,快速入门,深入分析
目录 转载自:http://elf8848.iteye.com/blog/875830 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf 点击打开链接 SpringMVC核 ...
- Django REST framework(官方教程)
跟着Django的教程走例子,遇到了Django REST Framework的内容,可惜教程用的版本有点老,在Django1.5,Python3.3下例子都通不过.在http://django-re ...
- struts2教程--快速入门
Struts2框架介绍 1.三大框架 : 是企业主流 JavaEE开发的一套架构 Struts2 + Spring + Hibernate 2. 什么是框架?为什么要学框架 ? 框架 是 实现部分功能 ...
- 工业机器人入门z50的含义_工业机器人基础教程——快速入门学习
六轴.水平关节(SCARA).DELTA等不同类型的机器人入门基础教程,学完这些,您将成为一名优秀的机器人应用工程师! 到2020年,工业机器人密度达到每万名员工使用100台以上.我国工业机器人市场将 ...
- 工业机器人基础教程——快速入门学习
想成为一名优秀的机器人应用工程师,从这里学起,六轴.水平关节(SCARA).DELTA等不同类型的机器人入门基础教程推荐. 1.<机器人学导论> 本书曾作为美国斯坦福大学机器人学导论的教材 ...
- springmvc教程--快速入门教程
springmvc教程系列: springmvc史上最好教程(3) springmvc史上最好教程(2) 一. SpringMVC架构 1.1. Spring web mvc介绍 Spring web ...
- Django REST framework (DRF) 不能用property或method排序
因为在定义一个model的字段时,将值定义为类似下面的 code = models.CharField(choices=(("REGISTER", "注册"), ...
最新文章
- 一批高校调整国庆假期!教育部回应,大学生国庆假期能否离校?
- 《基于张量网络的机器学习入门》学习笔记4
- 什么数据库比mysql效率高_牛x!一款比传统数据库快 100-1000 倍的数据库,来认识一下?...
- 统计输入中数字出现的次数java,java实现统计文章(英文)中字母、数字、空格和其他字符出现的次数...
- .Net 2.0里有一个有用的新功能:迭代器
- js、react对象名和对象属性赋值
- 用C#实现对Oracle 存储过程/函数/包的调试(附源代码)
- 董明珠:格力100%不会爆雷 爆雷的白马股不是真正白马股
- 给mac配置adb 路径
- php josnp_浅析php中jsonp的跨域实例
- (5)剑指Offer之栈变队列和栈的压入、弹出序列
- LitePal的使用——Android开源数据库
- 打印机与计算机无法进行通讯,打印时电脑提示:“打印机不能与计算机进行通讯”是为什么啊?是电脑出现问题还是打印机出现问题了?...
- 微信小程序电子签名实现并识别文字
- QGIS免费获取并加载行政区边界
- An Apple a day keeps the doctor away
- 不用科学梯子下载mokee-mkq-mr1分支安卓10.0源码
- mysql中Tinyint(1)和Tinyint(4)的区别
- python中os库用法详解(总结)
- Charles抓包乱码
热门文章
- erlang精要(22)-归集器、记录
- access开发精要(10)-筛选
- 【机器学习】图解机器学习中的 12 种交叉验证技术
- 【深度学习】2021 年了,TensorFlow 和 PyTorch 两个深度学习框架地位又有什么变化吗?...
- Python工程能力进阶、数学基础、经典机器学习模型实战、深度学习理论基础和模型调优技巧……胜任机器学习工程师岗位需要学习什么?...
- 【NLP傻瓜式教程】手把手带你HAN文本分类(附代码)
- 十分钟掌握pyecharts十类顶级图,都很实用!
- 负样本的艺术,再读Facebook双塔向量召回算法
- 亮相LiveVideoStackCon 2021,网易云信分享QoS优化之道
- 理解webpack原理,手写一个100行的webpack