![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
django-rest-framework
专职
人生苦短,我用python
展开
-
django-rest-framework中如何自定义一个权限类
from rest_framework.permissions import BasePermissionclass SvipPermission(BasePermission): # 不能访问的提示信息 message = "必须是Svip用户才能访问" def has_permission(self, request, view): if request.user.user_type != 3: return False .原创 2021-03-31 15:02:32 · 186 阅读 · 0 评论 -
django-rest-framework中如何自定义一个限流类
1. 自定义一个限流类class VisitThrottle(BaseThrottle): """自定义限流控制类, 60秒内只能访问3次""" def __init__(self): self.history = None def allow_request(self, request, view): # 获取用户的Ip地址 remote_addr = request.META.get('REMOTE_ADDR') .原创 2021-03-31 14:42:20 · 262 阅读 · 2 评论 -
django-rest-framework中token认证的原理及如何自定义实现token认证
1. Token认证:Token是一种用户身份的验证方式,通常叫做令牌验证。当用户第一次登录成功后,服务器会生成一个Token并将此Token返回给用户,以后用户只需要带上这个Token前来请求数据即可,无需再用用户名和密码。2. Token验证过程①首次登录时,客户端通过用户名与密码请求登录②服务端收到请求并验证用户名与密码③若验证通过,服务端会签发一个Token,该Token会保存在服务端的数据库中,并且也会返回给客户端④客户端收到Token并存储起来,比如放在Cookie,Se原创 2021-03-30 14:57:06 · 1320 阅读 · 0 评论 -
django-rest-framework认证源码解读和自定义一个认证类
1. 调用rest-framework中的dispatch方法2. 调用 initialize_request方法,对原生request对象进行封装3. 调用 get_authenticators 获取认证类对象列表4. 封装request对象时,就会把原生request对象和获取到的认证类对象列表赋给request._request和request.authenticators5. 至此,新request对象封装完成,认证校验入口6. 调用perform_auth.原创 2021-03-29 18:47:52 · 162 阅读 · 2 评论 -
django-rest-framework中自定义异常捕获
1. DRF中自带的异常捕获类型2. 增加额外异常捕获流程3. 比如数据库异常drf不能自动捕获,我们可以自定义一个数据库异常捕获(1)在项目根目录县新建一个exceptions.py文件,代码如下from rest_framework.views import exception_handler as drf_exception_handlerfrom rest_framework.response import Responsefrom rest_framework im.原创 2021-03-06 12:10:17 · 429 阅读 · 0 评论 -
django-rest-framework中过滤、排序、搜索、分页讲解
1. 过滤:(1)过滤基本使用(2)我们也可以自定义过滤器类,来达到过滤时也可以模糊匹配,而不是精准匹配, 在应用下面新建一个filters.py文件,文件中定义过滤器类import django_filtersfrom django_filters.rest_framework import FilterSetfrom .models import BookInfoclass BookInfoFilter(FilterSet): """图书过滤器""" ..原创 2021-03-01 19:03:43 · 476 阅读 · 0 评论 -
django-rest-framework中,认证、权限、限流讲解
1 . 认证认证一般都是进行全局配置此认证是给drf进行认证的,所以只有drf中定义的视图才会走此认证,也就是继承(APIView、GenericAPIView、ModelViewSet等),而继承django中的View是不走此认证的2. 权限(1)权限一般都是进行局部配置(2)自定义权限:此定义的MyPermission权限类,只能访问列表视图:查所有、新增,不能访问详情视图:查单一、修改单一、删除单一,因为has_object_permission方法返回的Fals原创 2021-02-28 18:46:16 · 301 阅读 · 1 评论 -
django-rest-framework中在视图集中新增额外行为
1. 序列化器中的代码from rest_framework import serializersfrom .models import BookInfodef no_negative(value): """校验是不是负数""" if value == "": return value elif value < 0: raise serializers.ValidationError({"err": "价格不能是负数"})原创 2021-02-28 11:51:21 · 300 阅读 · 2 评论 -
django-rest-framework中视图集ViewSet、GenericViewSet详解
1. 视图集ViewSet2. 常用视图集父类3. ViewSet实现增删改查接口(1). views.py代码from rest_framework import viewsetsclass BookViewSet(viewsets.ViewSet): # ViewSet类继承自APIView """ViewSet视图集""" def list(self, request): # 获取查询集 books = Bo原创 2021-02-27 18:34:56 · 1675 阅读 · 1 评论 -
django-rest-framework中带外键字段的序列化器和视图类写法
1. 序列化器:from rest_framework import serializersfrom .models import BookInfo, HeroInfoclass BookInfoSerializer(serializers.ModelSerializer): """图书序列化器""" class Meta: model = BookInfo fields = "__all__" # 映射模型类中存在的所有字段class原创 2021-02-27 15:31:17 · 752 阅读 · 0 评论 -
django-rest-framework中GenericAPIView+Mixin扩展类、合成类实现增删改查
1. GenericAPIView+Mixin实现from rest_framework.generics import GenericAPIViewfrom rest_framework.mixins import CreateModelMixin, ListModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixinclass GBookListAPIView(ListModelMixin, CreateModelM原创 2021-02-27 15:02:02 · 171 阅读 · 0 评论 -
django-rest-framework中两个基类APIView、GenericAPIView使用详解
两个基类APIView、GenericAPIView1. APIView讲解2. APIView实现增删改查class BookListAPIView(APIView): """图书列表类视图""" def get(self, request): books = BookInfo.objects.all() serializers = BookInfoSerializer(instance=books, many=True) .原创 2021-02-27 14:06:48 · 350 阅读 · 0 评论 -
django-rest-framework中序列化器的序列化和反序列化使用详解
1. 序列化流程图:2. 反序列化流程图选项参数用来约束反序列化时前端传递过来的参数是否合法3. 序列化器中CharField和IntegerField选项参数4. 序列化器中字段通用选项参数5. models.py代码from django.db import modelsclass BookInfo(models.Model): btitle = models.CharField(max_length=50, verbose_name="标题...原创 2021-02-25 17:01:28 · 573 阅读 · 0 评论 -
django-rest-framework实现数据的过滤、搜索、排序
过滤 (1)如果进行条件过滤,需要首先安装django-filter模块:pip install django-filter(2)在配置文件settings.py中添加应用django_filters:INSTALLED_APPS = [ ...... 'apps.assets.apps.AssetsConfig', "rest_framework", "django_filters",](3)在apps/assets/views.py导入包:...原创 2020-12-29 14:50:08 · 1657 阅读 · 0 评论 -
django-rest-framework教程6-如何生成DRF中的API接口文档
()1. 如何生成API接口文档(1)settings.py文件中增加配置REST_FRAMEWORK = { # 自动生成API接口文档配置 "DEFAULT_SCHEMA_CLASS": "rest_framework.schemas.AutoSchema", ......,}(2)项目的根urls.py文件中增加配置from rest_framework.schemas import get_schema_viewschema_view = get_原创 2020-11-28 15:03:15 · 675 阅读 · 1 评论 -
django-rest-framework教程5-认证和权限
1. 认证和权限的区别:(1)认证指的是对用户登录的身份进行校验(2)权限指的是一个登录验证通过的用户可以访问哪些接口,或者是对某一个接口可以拿到什么级别权限的数据2. token认证,创建方式有两种(1)使用django manage.py生成token, 前提一定要将token注册到应用中INSTALLED_APPS = [ "rest_framework.authtoken", # DRF自带的Token认证,会生成一张数据表]python manage.py d原创 2020-11-28 14:03:55 · 365 阅读 · 0 评论 -
django-rest-framework教程4-视图和路由
1.原创 2020-11-08 15:54:13 · 292 阅读 · 0 评论 -
django-rest-framework教程3-序列化(serializers)
1. 如何将django中的QuerySet查询集进行序列化from course.models import Coursefrom django.core import serializersjson_info = serializers.serialize("json", Course.objects.all())print(json_info) 输出:[{"model": "course.course", "pk": 3, "fields": {"name": "英语", "intro原创 2020-11-07 17:28:16 · 362 阅读 · 0 评论 -
django-rest-framework教程2-安装和配置
1. 安装django-rest-framework及其所需软件包pip install djangorestframeworkpip install markdown # 对可浏览API的Markdown支持.pip install django-filter # 过滤支持2. 注册rest_frameworkINSTALLED_APPS = [ ...... "rest_framework", # 注册应用]生成迁移文件,执行迁移文件并生.原创 2020-11-07 15:38:27 · 398 阅读 · 0 评论 -
django-rest-framework教程1-概念相关知识点
1. 从四个方面理解前后端分离交互形式 代码组织方式 开发模式 数据接口规范流程2. Restful API最佳实践协议、域名、版本、路径、http动词、过滤信息、状态码、错误处理、返回结果、Hypermedia API3. 深入理解什么是Restful API参考网址:http://www.imooc.com/article/3047564. Http请求方法详解...原创 2020-11-07 14:43:14 · 151 阅读 · 0 评论