以UserInfo表登陆接口为例

ModelViewSet的用法十分简单,定义一个视图类,指定一个模型表,指定一个序列化类即可帮我们完成增删改查等功能

示例:

  1. # 视图层
  2.  
  3. from app01.MySerailizers import UserSerializer
  4. from rest_framework.viewsets import ModelViewSet
  5.  
  6. class Login(ModelViewSet): # 继承ModelViewSet
  7. # authentication_classes = []
  8. # permission_classes = []
  9. queryset = models.UserInfo.objects.all() # 指定模型表 这里的.all()加与不加不影响,内部源码有做处理
  10. serializer_class = UserSerializer # 指定自己定义的序列化类

路由控制Route的使用方法也十分简单

步骤:

  1、导入路由控制类

    DefaultRouter可以帮我们产生4条路由,SimpleRouter可以帮我们产生2条路由

  1.     from rest_framework.routers import DefaultRouter,SimpleRouter

  2、生成路由控制类对象并注册

  1.     router = DefaultRouter() # 实例化路由控制对象
  2.     router.register("login",views.Login) # 注册

  3、编写路由,固定写法

  1.     from django.conf.urls import include
  2.  
  3.     urlpatterns = [
  4.     url(r'', include(router.urls)),
  5.     ]

结合上例路由层:

  1. from rest_framework.routers import DefaultRouter,SimpleRouter
  2. from django.conf.urls import include
  3.  
  4. router = DefaultRouter()
  5. router.register("login",views.Login)
  6.  
  7. urlpatterns = [
  8.  url(r'', include(router.urls)),
  9.  
  10. ]

序列化组件层:

Mserailizers.py

  1. from rest_framework import serializers
  2. from app01 import models
  3. from rest_framework.exceptions import ValidationError
  4. class UserSerializer(serializers.ModelSerializer): # 这里用的是ModelSerailizer
  5. class Meta():
  6. model = models.UserInfo
  7. fields = "__all__"
  8.  
  9. def validated_username(self,value:str):
  10. if not value:
  11. raise ValidationError("用户名不能为空!")
  12. elif len(value)<3:
  13. raise ValidationError("用户名不能低于3位!")
  14. elif value[0].isdigit():
  15. raise ValidationError("用户名不能以数字开头!")
  16. elif not value.isalpha():
  17. raise ValidationError("用户名只能是字母数字下划线组成!")
  18. else:
  19. return value
  20.  
  21. def validated_password(self,value):
  22. if not value:
  23. raise ValidationError("密码不能为空!")
  24. else:
  25. return value

关于Serailizers序列化组件详见:https://www.cnblogs.com/dongxixi/p/11130052.html

这样我们就快速完成了一个接口了,当然,这离实际应用还需要添加身份认证、权限认证、频率校验、版本控制等等,这些其实配置起来都一样简单,下面继续...

频率组件

  1. 频率组件
  2. -限制用户访问次数
  3. -使用:
  4. -写一个类继承,最好单独开PY文件写
  5. class Throttle(SimpleRateThrottle):
  6. scope = 'lxx'
  7. def get_cache_key(self, request, view):
  8. return request.META.get('REMOTE_ADDR')
  9. #返回什么值,就以什么做过滤,返回用户id,就以用户id做过滤
  10. #return self.get_ident(request) 默认,以IP做限制
  11.  
  12. -在setting中配置:
  13. 'lxx':'3/minute'
  14. -局部使用:
  15. -在视图类中配置:
  16. throttle_classes=[MyThrottle,]
  17. -全局使用:
  18. setting中配置
  19. REST_FRAMEWORK={
  20. 'DEFAULT_THROTTLE_CLASSES': ['app01.MyAuths.MyThrottle',],
  21.  
  22.           }
  23.  
  24. -查找顺序:先从自己类中找-----》项目setting配置文件中找-----》drf默认的里面找

rest_framework之ModelViewSet、路由控制、序列化组件快速搭建项目雏形的更多相关文章

  1. 基于Vue-cli 快速搭建项目

    Vue-cli可以快速帮助我们创建一个项目,这是官方给我们提供的脚手架.下面我说一下vue-cli的使用方法. 一.准备工作 在使用vue-cli时,首先需要安装nodejs,npm,其次需全局安装v ...

  2. vue-cli webpack 快速搭建项目

    一.安装vue npm install vue -g 二.用vue-cli快速搭建项目 //全局安装vue-cli npm install install -g vue-cli //创建一个基于web ...

  3. (转载) android快速搭建项目积累

    android快速搭建项目积累 2016-04-05 20:07 519人阅读 评论(0) 收藏 举报  分类: android优化(8)   Rx技术(5)  版权声明:本文为博主原创文章,未经博主 ...

  4. 使用vue-cli(vue脚手架)快速搭建项目

    vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目.这篇文章将会从实操的角度,介绍整个搭建的过程. 1. 避坑前言 其实这次使用vue-cli的 ...

  5. 前端-如何用gulp快速搭建项目(sass预编译,代码压缩,css前缀,浏览器自动刷新,雪碧图合成)

    一:gulp优点: 易于使用 通过代码优于配置的策略,Gulp 让简单的任务简单,复杂的任务可管理: 插件高质 Gulp 严格的插件指南确保插件如你期望的那样简洁高质得工作. 构建快速 利用 Node ...

  6. vue cli4.0 快速搭建项目详解

    搭建项目之前,请确认好你自己已经安装过node, npm, vue cli.没安装的可以参考下面的链接安装. 如何安装node? 安装好node默认已经安装好npm了,所以不用单独安装了. 如何安装v ...

  7. httprunner(3)用脚手架快速搭建项目

    前言 如何快速搭建一个httprunner项目呢?我们可以使用脚手架,脚手架就是自动地创建一些目录,形成一个项目的架构,不需要我们再手动的去创建 查看创建新项目的命令 先来查看一下帮助命令 httpr ...

  8. 寻找写代码感觉(一)之使用 Spring Boot 快速搭建项目

    写在前面 现在已经是八月份了,我已经荒废了半年居多,不得不说谈恋爱确实是个麻烦的事,谈好了皆大欢喜,分手了就是萎靡不振,需要很长一段时间才能缓过来. 人还是要有梦想的,至于实现只不过是一个契机,但凡不 ...

  9. vue cli3.0快速搭建项目详解(强烈推荐)

    这篇文章主要介绍下vue-cli3.0项目搭建,项目结构和配置等整理一下,分享给大家. 一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@vue/cl ...

随机推荐

  1. Neo4j 在Linux下的安装登录

    第一步:安装JDK https://blog.csdn.net/qq_33951308/article/details/82933535 第二步:下载并安装neo4j 下载地址   或者直接用wget ...

  2. 差分约束 【bzoj2330】[SCOI2011]糖果

    /*[bzoj2330][SCOI2011]糖果 2014年3月5日1,2761 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖 ...

  3. TensorFlow(十):卷积神经网络实现手写数字识别以及可视化

    上代码: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = inpu ...

  4. 找不到编译器:wepy-compiler-less

    npm install less 后再 npm install wepy-compiler-less 解决

  5. thinkphp5/php cors跨域处理

    现在做项目,很多都是前后端分离.也就是前段,后端都有自己的域名. 那么前段请求后端接口的时候,就会出现跨域问题.出现跨域的问题,主要 是浏览器的安全策略-同源策略.那么怎么解决跨域问题呢,抛出主角 C ...

  6. Ubuntu 14.04 查看指定端口的服务

    查看已经连接的服务端口(ESTABLISHED) netstat -a 查看所有的服务端口(LISTEN,ESTABLISHED) netstat -ap 查看指定端口,可以结合grep命令: net ...

  7. myeclipse导入项目

    因为现在项目大部分都是maven项目所以导入的时候因该选择

  8. 走进JavaWeb技术世界11:单元测试框架Junit

    JUnit你不知道的那些事儿 转自 老刘 码农翻身 2016-02-24 话说有一次Eric Gamma 坐飞机的时候偶遇Kent Beck(对,就是极限编程和TDD的发起人) ,  两位大牛见面寒暄 ...

  9. git一些常用配置

    1. git config git config 分为全局和局部 全局:git config --glabol 局部:git config 最终会生成配置文件,一般在~/.gitconfig. 2. ...

  10. equal numbers

    给你一个n长度的数组,让你修改0到n次,问每次修改后能剩下不同个数的最小数是多少: 这里有了两种做法,一种是变成他们的lcm这样的话,修改后答案应该是减去改过的个数然后在加一 另一种就是数字修改成序列 ...