rest-framwork官方文档教程(一)
该项目是按照官网quickstart进行的,具体也可查看rest-framework官网:
https://www.django-rest-framework.org/tutorial/quickstart/#
一.安装依赖库
此处请确认你的python版本,如果你使用的是python3,那么在pip的时候和进入python命令行的时候要使用pip3和python3的命令
pip3 install django pip3 install djangorestframework
二.创建项目
(一)quickstart
# 创建项目文件夹
mkdir tutorial
cd tutorial/
# 创建一个django项目并创建一个应用
django-admin startproject tutorial .
(上一个命令中最后还有一个点别丢掉,否则创建的项目目录会多一层)
django-admin startapp quickstart
以上步骤完成后目录结构如下:

在这里说一下project和app的关系。一个应用是完成某件事的一个web程序,比如一个博客系统等。而一个工程包含网站的一系列配置以及多个应用。一个工程可以包括多个应用,一个应用也可以存在于多个工程
首次初始化你的数据库:
cd ..
python3 manage.py migrate
此时显示:

然后创建数据库初始化的用户名密码:
python manage.py createsuperuser --email admin@example.com --username admin

三.编写项目
现在用ide打开刚才创建的工程,开始coding...
1.序列化
首先要定义一些序列化,所以来创建一些序列化的东西
创建一个py文件,具体位置为:tutorial/quickstart/serializers.py
from django.contrib.auth.models import User,Group
from rest_framework import serializers class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model=User
fields=('url','username','email','groups') class GroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model=Group
fields=('url','name')
在这里我们使用超链接序列化器HyperlinkedModelSerializer,当然你也可以使用其他主键字段和其他各种关系,但Hyperlinked比较更restful化.
序列化小知识:
在程序运行的过程中,所有的变量都是在内存中,比如,定义一个dict:
d = dict(name='Bob', age=20, score=88)
可以随时修改变量,比如把name改成'Bill',但是一旦程序结束,变量所占用的内存就被操作系统全部回收。如果没有把修改后的'Bill'存储到磁盘上,下次重新运行程序,变量又被初始化为'Bob'。
我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。
序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。
反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。
2.创建视图
现在我们来创建视图,打开文件tutorial/quickstart/views.py
from django.contrib.auth.models import User,Group
from rest_framework import viewsets
from tutorial.quickstart.serializers import UserSerializer,GroupSerializer class UserViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer class GroupViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows groups to be viewed or edited.
"""
queryset = Group.objects.all()
serializer_class = GroupSerializer
与写多个视图相比,我们将具有常见行为的组成一个类叫做viewsets
3.URLs
接下来进行url的编辑,操作文件为:tutorial/urls.py
from django.contrib import admin
from django.urls import path
from django.conf.urls import url,include
from rest_framework import routers
from tutorial.quickstart import views router=routers.DefaultRouter()
#定义路由地址
router.register(r'users',views.GroupViewSet)
router.register(r'groups',views.GroupViewSet)
#注册新的路由地址 urlpatterns = [
path('admin/', admin.site.urls),
url(r'^',include(router.urls)),
url(r'^api-auth/',include('rest_framework.urls'),namespace='rest_framework')
]
4.页码
每个分页控制多少个返回对象,在tutorial/settings.py
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10
}
5.settings
在tutorial/settings.py里的INSTALLED_APPS中添加'rest_framework'

到现在,我们的quickstart完成啦
下面来进行一些调试
6.调试接口
输入的命令
python3 manage.py runserver

此时访问http://127.0.0.1:8000/,可以看到如下界面:

访问http://127.0.0.1:8000/users/结果如下:

到这里,我们就成功创建了一个django-rest项目啦~~~~~
rest-framwork官方文档教程(一)的更多相关文章
- WordPress安装官方文档教程
01.可访问的网址 02.目录和软件 包括: 访问 web服务器 (通过 shell 或者 FTP)的权限 一个 文本编辑器 一个 FTP客户端 (如果你需要在一个远程服务器上安装WordPress) ...
- Python 官方文档&教程
英文原版(3.6版): https://docs.python.org/3.6/index.html https://docs.python.org/3.6/tutorial/index.html 汉 ...
- 2DToolkit官方文档中文版打地鼠教程(三):Sprite Collections 精灵集合
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- 2DToolkit官方文档中文版打地鼠教程(一):初始设置
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- 【Phabricator】教科书一般的Phabricator安装教程(配合官方文档并带有踩坑解决方案)
随着一声惊雷和滂沱的大雨,我的Phabricator页面终于在我的学生机上跑了起来. 想起在这五个小时内踩过的坑甚如大学隔壁炮王干过的妹子,心里的成就感不禁油然而生. 接下来,我将和大家分享一下本人在 ...
- MySQL8.0.28安装教程全程参考MySQL官方文档
前言 为了MySQL8.0.28安装教程我竟然在MySQL官方文档逛了一天,至此献给想入门MySQL8.0的初学者.以目前最新版本的MySQL8.0.28为示例进行安装与初步使用的详细讲解,面向初学者 ...
- 比官方文档更易懂的Vue.js教程!包你学会!
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由蔡述雄发表于云+社区专栏 蔡述雄,现腾讯用户体验设计部QQ空间高级UI工程师.智图图片优化系统首席工程师,曾参与<众妙之门> ...
- 【AutoMapper官方文档】DTO与Domin Model相互转换(中)
写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...
随机推荐
- 如何在Sierra运行 Specials K 的patch
https://github.com/ApolloZhu/CORE-Keygen-and-Special-K-for-Sierra-Utility/blob/master/Special%20K%20 ...
- phar打包项目压力对比测试
工具 http_load 测试url: http://api.test.chaoma.me/agent/ad/good_goods/query http://api.test.chaoma.me/ag ...
- UI高端课程
目后佐道IT教育正在打架报名中,欢迎高中生.大学生前来学习编程技术和UI设计,招生面向全国. 石破天惊 前100个报名者免费提供高级公寓居住(里面有空调,暖气,热水器,洗衣机). 赠送神秘课程价值29 ...
- 理解AttributeUsage类
类定义: // 摘要: // 指定另一特性类的用法. 此类不能被继承. [Serializable] [AttributeUsage(AttributeTargets.Class, Inherited ...
- Vue路由跳转到新页面时 默认在页面最底部 而不是最顶部 的解决
今天碰到一个问题 vue路由跳转到新的页面时会直接显示页面最底部 正常情况下是显示的最顶部的 而且好多路由中不是全部都是这种情况 折腾好长时间也没解决 最后在网上找到了解决办法 其实原理很 ...
- DeepFaceLab小白入门(5):训练换脸模型!
训练模型,是换脸过程中最重要的一部分,也是耗时最长的一部分.很多人会问到底需要多少时间?有人会告诉你看loss值到0.02以下就可以了.我会告诉你,不要看什么数值,看预览窗口的人脸.看第二列是否和第一 ...
- Python json和simplejson的使用
在Python中,json数据和字符串的转换可以使用json模块或simplejson模块. json从Python2.6开始内置到了Python标准库中,我们不需要安装即可直接使用. simplej ...
- Java-basic-6-方法
命令行参数的使用 public class test { public static void main(String args[]) { for(int i = 0; i < args.len ...
- Nordic Collegiate Programming Contest 2015 D. Disastrous Downtime
You're investigating what happened when one of your computer systems recently broke down. So far you ...
- foreach遍历数组的表格
<?php /** * * @authors Your Name (you@example.org) * @date 2017-03-17 19:06:19 * @version $Id$ */ ...