Django:学习笔记(3)——REST实现

了解REST风格

  按照传统的开发方式,我们在实现CURD操作时,会写多个映射路径,比如对一本书的操作,我们会写多个URL,可能如下

  1. web/deleteBookById
  2. web/updateBookById
  3. web/addBook
  4. web/getBookById
  5. ....

  但是由于很难形成统一的URL命名规范,导致了URL命名的混乱REST是面向资源的,URL的设计只需要将资源通过合理方式暴露出来即可。比如:

  1. web/book
  2. web/dog
  3. ....

  资源暴露出来了,如何实现传统开发方式的CURD呢?在REST设计规范中,只需将请求方法(GET:查询、POST:新增、PUT:修改、DELETE:删除)进行相对应的设置即可

  1. GET web/getDogs --> GET web/dogs 获取所有小狗狗
  2. GET web/addDogs --> POST web/dogs 添加一个小狗狗
  3. GET web/editDogs/:dog_id --> PUT web/dogs/:dog_id 修改一个小狗狗
  4. GET web/deleteDogs/:dog_id --> DELETE web/dogs/:dog_id 删除一个小狗

Django Rest实现

安装配置django rest framework

  执行pip命令安装REST框架

  1. pip install djangorestframework

  安装完成后,在项目源目录的setting.py中进行配置

  

定义资源,实现序列化

  应用目录下models.py

  1. # 定义一个用户信息
  2. class User(models.Model):
  3. username = models.CharField(max_length=16)
  4. password = models.CharField(max_length=16)
  5. gender = models.CharField(max_length=2)
  6. mail = models.EmailField()

  应用目录下serializers.py

  1. from .models import User
  2. from rest_framework import serializers
  3.  
  4. class UserSerializer(serializers.HyperlinkedModelSerializer):
  5. class Meta:
  6. model = User
  7. fields = ('id','username','password')  

继承View,重写HTTP METHOD

  应用目录下views.py

  1. from myweb.models import User
  2. from .serializers import UserSerializer
  3. from rest_framework.viewsets import ModelViewSet
  4.  
  5. class UserModelSet(ModelViewSet):
  6. queryset = User.objects.all()
  7. serializer_class = UserSerializer  

配置URL

  项目源目录urls.py

  1. from django.urls import path,include
  2. from rest_framework import routers
  3. from myweb.views import UserModelSet
  4.  
  5. routers = routers.DefaultRouter()
  6. routers.register('user',UserModelSet)
  7.  
  8. urlpatterns = [
  9. path('api/',include(routers.urls)),
  10. ]

  配置到此,一个基本的API接口已经完成。 

  

Django:学习笔记(3)——REST实现的更多相关文章

  1. Django 学习笔记之四 QuerySet常用方法

    QuerySet是一个可遍历结构,它本质上是一个给定的模型的对象列表,是有序的. 1.建立模型: 2.数据文件(test.txt) 3.文件数据入库(默认的sqlite3) 入库之前执行 数据库同步命 ...

  2. Django 学习笔记之三 数据库输入数据

    假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介 ...

  3. Django学习笔记(五)—— 表单

    疯狂的暑假学习之  Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path         ...

  4. Django学习笔记(三)—— 型号 model

    疯狂暑期学习 Django学习笔记(三)-- 型号 model 參考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'defaul ...

  5. Django 学习笔记(二)

    Django 第一个 Hello World 项目 经过上一篇的安装,我们已经拥有了Django 框架 1.选择项目默认存放的地址 默认地址是C:\Users\Lee,也就是进入cmd控制台的地址,创 ...

  6. Django 学习笔记(五)模板标签

    关于Django模板标签官方网址https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.IF标签 Hello World/vi ...

  7. Django 学习笔记(四)模板变量

    关于Django模板变量官方网址:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.传入普通变量 在hello/Hell ...

  8. Django 学习笔记(三)模板导入

    本章内容是将一个html网页放进模板中,并运行服务器将其展现出来. 平台:windows平台下Liunx子系统 目前的目录: hello ├── manage.py ├── hello │ ├── _ ...

  9. Django 学习笔记(七)数据库基本操作(增查改删)

    一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.p ...

  10. Django 学习笔记(六)MySQL配置

    环境:Ubuntu16.4 工具:Python3.5 一.安装MySQL数据库 终端命令: sudo apt-get install mysql-server sudo apt-get install ...

随机推荐

  1. 第二百二十七节,jQuery EasyUI,ComboTree(树型下拉框)组件

    jQuery EasyUI,ComboTree(树型下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解EasyUI中ComboTree(树型下拉框)组件的使用方法,这个 ...

  2. ar0331

    aptina公司出品 分三个文档:ar0331_ds.pdf 数据表ar0331_dg.pdf 开发指导ar0331_rr_d.pdf 相关寄存器 色调映射(Tone Mapping):http:// ...

  3. [转]VMPlayer的Briged网络配置

    VMware.VMware Player.VirtualBox.Windows Virtual PC等虚拟机软件都提供了桥接(bridged).网络地址转换(network address trans ...

  4. (转)负载均衡,回话保持,cookie

    servlet操作cookie:http://elf8848.iteye.com/blog/253198 负载均衡,回话保持:http://www.cnblogs.com/qq78292959/arc ...

  5. 蓝桥杯 第四届C/C++预赛真题(3) 第39级台阶(递归)

    题目标题: 第39级台阶 小明刚刚看完电影<第39级台阶>,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶 ...

  6. django用户认证系统——修改密码6

    再此之前我们已经完成了用户登录.注册.注销等功能,接下来让我们继续为用户提供修改密码的功能.该功能 Django 的 auth 应用也已经为我们提供,过程几乎和之前的登录功能完全一样. 编写修改密码模 ...

  7. OpenSSL Heart Bleed 如何修复

     一 . 前言  这两天这个事件沸沸扬扬啊,有了这个bug黑客在电脑前动动手指就能获取各大电商网站.各大银行用户的用户名和密码了,屌爆了 BUG具体内容 : http://heartbleed.com ...

  8. android应用安全——组件通信安全(Intent)

    这里主要涉及到了Activity.Content Provider.Service.Broadcast Receiver等.这些如果在Androidmanifest.xml配置不当,会被其他应用调用, ...

  9. 我的JavaScript笔记--面向对象

        单例模式 ??(基于对象,不能批量生产)  var person = {             name: "ywb",             sayHi: funct ...

  10. slave_exec_mode参数对主从复制的影响

    主从复制中常会遇到的问题就是1062主键重复.1032 slave上相关记录没找到 如果在读写分离的架构中,slave同步失败会对业务造成很大的影响的(比如主写入了一条数据,从上无法读取到这样对业务影 ...