Django Rest Framework 分页(下) ?...在之前的 django rest framework,其它组件中,在视图函数中继承类都是 rest_framework.view.APIView,这个 APIView 是继承的 django 中的 View...② 路由 在执行之前要更改一下路由系统 ?...但是在 as_view 方法中,对路由系统做了略微的改动,需要对方法,做——映射关系。...即 "get": "list","post": "create",get(获取单条数据)请求,会进入子类的 list 方法,而 create (创建对象)方法则代表了 post 请求。
三大认证准备工作 三大认证介绍 权限六表分析 六表数据测试 认证组件 自定义认证类 权限组件 自定义权限类 频率组件 自定义频率类 -曾老湿, 江湖人称曾老大。...# 路由分发 url(r'^api/', include('api.urls')), ] ---- 设置Media及路由 MEDIA_URL = '/media/' MEDIA_ROOT....权限表 4.用户角色关联表 5.角色权限关联表 Django六表规则: 1.用户表 2.角色表 3.权限表 4.用户角色关联表 5.角色权限关联表 6.用户权限关联表 ---- 自定义权限六表...settings.py ## 配置自定义user表 AUTH_USER_MODEL = 'api.User' models.py from django.db import models ## 用户表...在api目录下创建authentications.py文件 ## 自定义认证类 # 1.继承BaseAuthentication # 2.重写authenticate(self,request)方法
Django Rest Framework 视图(上) ?...一、ModelViewSet ① 源码分析 ModelViewSet 做的更彻底,它又一次继承了 GenericViewSet,并且在此之前又继承了其它几个类,因此功能更多,变成了 ModelViewSet...从这些类的名字可以大概看出, CreateModelMixin RetrieveModelMixin UpdateModelMixin DestroyModelMixin ListModelMixin 分别对应,创建...② 路由 ? 由于在获取,删除,更新数据的时候需要这项数据的唯一标识,这里是 pk 主键,因此需要在 url 中增加正则匹配。...④ 自定义 在 ModelViewSet 中,继承了多个 mixin 类,而这些类又分别封装了不同的对应于增删改查的方法,因此如果想要自定义一个接口,实现部分 http 方法,就可以根据需要继承不同的
自带的views进行相关方法的分装 二.viewsets视图集 ViewSetMixin:视图集工具 - 重写as_view - 将 请求方式 映射到视图类中的 指定方法 我们在路由中 类名.as_view...({'get': 'retrieve', 'delete': 'remove_obj'}) GenericViewSet:与模型类有关的接口视图集 - 可以从mixins那继承功能,也可以自定义功能 ViewSet...:与模型类无关或不是标准模型类接口 - 一般都是自定义功能 三.generics中GenericAPIView使用 将 queryset 和 serializer_class 封装成类属性,提供了三个方法...self.get_serializer(*args, **kwargs):获取指定 常用的几个参数 data:用于返序列化传参 many:获取多个序列化对象 instance:如果有后面save执行更新方法,没有执行创建方法...serializers.BookModelSerializer 其实再之前的基础再进行方法的分装 居然有什么方法看源码即可ctrl+左键看源码 六自定制视图 本来get他就只会找类中get方法我们可以对其设置让他找我们对于的名称 路由层
中 View DRF中 APIView GenericAPIView mixins扩展类 CreateAPIView(合并拓展类) 视图集 action和请求方法的映射 ViewSet GenericViewSet...CreateViewSet 路由 from rest_framework import routers 创建SimpleRouter路由对象 注册路由 第一个参数prefix为路由前缀,一般添加为应用名称即可...第二个参数viewset为视图集「不要加as_view」 将自动生成的路由添加到列表中 from django.urls import path, includefrom projects import...viewsfrom rest_framework import routers# 1.创建SimpleRouter路由对象router = routers.SimpleRouter()# 2.注册路由...)urlpatterns = [ # 将自动生成的路由添加到列表中 path('',include(router.urls))] action 自定义action from rest_framework.decorators
前言 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据...NOT_FOUND) serializer = BookInfoSerializer(books) return Response(serializer.data) 在设置路由时..., 'post': 'create'})), url(r'^genericviewset_books/(?...P\d+)/$',views_modelviewset.BookModelViewSet.as_view({'get': 'retrieve', 'put': 'update'})), ] # 生成路由类对象...: return self.list(request) 三、用法补充 1.扩展方法使用 此扩展方法包括:get_serializer_class(获取序列化器返回)、action属性、自定义方法的使用
HttpResponse(json.dumps(json_list, ensure_ascii=False), content_type='application/json') urls.py中加入路由如下...2.serializer序列化model 使用Django自带的model_to_dict()方法可以实现直接将模型数据转化为字典形式,但是对于DateTimeField、ImageField等字段时还是无法序列化...还支持定义自己的自定义解析器,这使您可以灵活地设计API接受的媒体类型。...此时,可以根据字段进行过滤,但是只能精确比配,对于字符串型字段不能模糊匹配,对于数值型字段也不能匹配区间,因此需要自定义filters,新建filters.py如下: import django_filters...除此之外,还可以自定义过滤的方法来满足个性化的需求。 搜索的使用 DRF的SearchFilter类基于Django-admin的搜索功能,支持简单的基于单个查询参数的搜索。
from django.contrib import admin from django.urls import path from app01 import views urlpatterns...,GenericViewSet继承了ViewSetMixin+GenericAPIView PS:ViewSetMixin控制了路由写法 ReadOnlyModelViewSet继承了RetrieveModelMixin...,可以通过组合继承,以前的写法可以继续使用,但是如果要自动生成路由必须得继承ViewSetMixin及其子类;或者选择继承ViewSet、GenericViewSet class ViewSetMixin...例如,创建绑定'GET'和'POST'方法的具体视图 到“列表”和“创建”动作… = MyViewSet视图。...As_view ({'get': 'list', 'post': 'create'}) 总结 补充 视图集中定义附加action动作 在视图集中,除了上述默认的方法动作外,还可以添加自定义动作。
目录 DRF-认证权限频率 认证 登录接口 认证 权限 作用 使用 频率 作用 使用 认证权限频率+五个接口 模型 视图 序列化器 认证权限频率类 配置文件 路由 DRF-认证权限频率 前后端混合开发...我们通过登录接口,来模拟认证登录,登录成功返回json字符串,并且携带随机字符串(uuid模拟生成token),通过token随机字符串来判断用户是否登录,登录了就更新token,首次登录就存token; 分析 创建...User表 创建UserToken表,和User一对一关系 前端传入用户名,密码 数据库取校验用户信息 校验成功,Token表内新增一条记录,返回给前端json格式字符串,字符串中带一个随机字符串 登录接口...from django.contrib import admin from django.urls import path,include from app01 import views from rest_framework.routers...全局配置频率类 'app01.auth.IPThrottle' ), } 总结 写一个类,继承SimpleRateThrottle,重写类属性scope,scope值自定义
-开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。...访问视图类传递过来的内容 # 需求: # 1) 在视图类中,可以通过request得到登陆用户request.user # 2) 在序列化类中,要完成数据库数据的校验与入库操作,可能会需要知道当前的登陆用户,但序列化类无法访问... ---- 路由 from django.conf.urls import url from . import views urlpatterns = [ url(r'^v1/books...因为别人帮我们干了... mixins视图六大工具类 ---- 路由 from django.conf.urls import url from . import views urlpatterns...def get(self, request, *args, **kwargs): return self.list(request, *args, **kwargs)  ---- 使用自定义的
视图集也有 2 个基类:ViewSet 和 GenericViewSet,前者是最基本的视图集类,后者拓展自前者,拓展了很多 Web 开发中的通用逻辑。...django-rest-framework 提供了资源操作的 5 个混入类,分别对应资源的创建、查询、更新、删除。...好了,视图集已经创建完毕,接下来我们从视图集生成视图函数,并绑定 URL。...在 django 的 URL 中,一条路由通常由 URL 模式,对应的视图函数和视图函数名组成。视图函数名的作用主要用于解析视图函数所对应的 URL。...运行开发服务器,访问 http://127.0.0.1:8000/api/,界面如下: django-rest-framework 为我们自动生成了 API 交互后台,在这个界面中可以和我们创建的 API
Django REST framework (DRF) 是一个强大而灵活的工具包,用于构建Web API,特别是基于Django的应用程序。...一、常见面试问题核心组件与工作流程视图(Views):解释视图在DRF中的作用,介绍基于类的视图(ViewSet、GenericViewSet)与视图集(ViewSets)的概念,以及如何关联到URL。...路由与URL配置路由器(Router):说明路由器如何根据ViewSet自动创建API路由,以及如何自定义路由命名和视图动作。...二、易错点与避免策略序列化器验证遗漏:确保在序列化器中充分定义验证规则,使用validate_方法对关联字段、自定义逻辑进行验证,防止脏数据进入数据库。...对于复杂查询,考虑使用Django ORM的查询优化技巧或添加数据库索引。
good.market_price 23 # json_list.append(json_dict) 24 25 # 改进方案,但是ImageFieldFile无法进行序列化...import JsonResponse 39 return JsonResponse(json_data,safe=False) 2.在urls.py设置路由 1 from django.urls...是一个bug导致的这个报错: 首先,我们的UserProfile表继承的django/admin自动创建的用户表AbstractUser, 然后,我们在UserProfile表中用__str__返回的是...pagination_class = GoodsPagination 重启项目,访问:http://127.0.0.1:8000/goods 即可看到分页效果 3.最重要的viewsets和router(路由器...2.自定义过滤器 在settings.py中注册django_filter,在末尾配置过滤 1 INSTALLED_APPS = [ 2 ..... 3 'django_filters
/Python_Web_Project/Django_Fresh_Ecommerce。...再看前端,src/router/index.js中定义了访问路由如下: { path: 'productDetail/:productId', name: 'productDetail',...先在apps/user_operation下创建serializers.py如下: from rest_framework import serializers from .models import...再将其注册到urls.py中: # 配置收藏路由 router.register(r'userfavs', UserFavViewSet, basename='userfavs') 示意如下: ?...可以根据需要进行自定义设置。
文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库[2] 此前我们一直在操作博客文章(Post)资源,并借此介绍了序列化器(Serializer)、视图集(Viewset)、路由器...(Router)等 django-rest-framework 提供的便利工具,借助这些工具,就可以非常快速地完成 RESTful API 的开发。...对应如下: HTTP请求 Action URL GET list_comments /posts/:id/comments/ POST create /comments/ 文章评论列表 API 使用自定义的...首先来实现创建评论的接口,先为评论创建一个视图集: comments/views.py from rest_framework import mixins, viewsets from .models..., mixins.RetrieveModelMixin, viewsets.GenericViewSet ): # ...
import GenericViewSet from rest_framework import serializers from drf_dynamic_fields import DynamicFieldsMixin...获取用户列表(验证token)""" class getUser(mixins.ListModelMixin,GenericViewSet): authentication_classes =...createUserViewRouter.urls)), # 新增用户 path('getuser/',include(getUserRouter.urls)), # 新增用户 ] 获取TOKEN 创建一个用户...验证token 未加token验证 class getUser(mixins.ListModelMixin,GenericViewSet): queryset = models.UserProfile.objects.all...加token验证 class getUser(mixins.ListModelMixin,GenericViewSet): authentication_classes = (JSONWebTokenAuthentication
事实上,我们在上一部教程 HelloDjango - Django博客教程(第二版)的 页面侧边栏:使用自定义模板标签 已经讲解了如何获取归档日期列表,只是当时返回的归档日期列表直接用于模板的渲染,而这里我们需要将归档日期列表序列化后通过...一是 action 装饰器,它用来装饰一个视图集中的方法,被装饰的方法会被 django-rest-framework 的路由自动注册为一个 API 接口。...视图集中所有以上提及的以标准动作命名的方法,都会被 django-rest-framework 的路由自动注册为标准的 API 接口。...由于 PostViewSet 视图集已经通过 django-rest-framework 的路由进行了注册,因此 list_archive_dates 也会被连带着自动注册为一个接口。...首先在 blog 应用下创建一个 filters.py 文件,用于存放自定义 filter 的代码,PostFilter 代码如下: from django_filters import rest_framework
pagination #0 GitHub https://github.com/Coxhuang/django-Pagination #1 环境 Python3.6 Django==2.0.7 djangorestframework...==3.8.2 #2 需求分析 查看某个列表式,需要分页展示 自定义分页输出的格式 自定义分页的参数 #3 开始 #3.1 新建一个Django项目 #3.2 新建文件 pagination.py(文件名随意...没有使用分页 视图 class get_view(mixins.CreateModelMixin, mixins.ListModelMixin, GenericViewSet...): pagination_class = MyCustomPagination # 使用刚刚自定义的分页 queryset = models.Student.objects.all(...每页显示多少个 class get_view(mixins.CreateModelMixin, mixins.ListModelMixin, GenericViewSet
这里事实上是DRF框架对路由的分发机制在Django的基础上做了优化,让我们可以将所有的请求方法都写在一个视图类中,而不用像在Django中那样必须区分列表类视图还是详情类视图。...实现自定义API其实就是在视图类中新增一个函数(这里是latest),然后用action作为装饰器,指定methods和detail这两个参数,对于url不需要做任何修改,但是如果是基于ViewSet实现自定义...其实ModelViewSet和ViewSet分别继承于GenericViewSet和APIView,上面说到的他们的不同点也正是源于此,建议读者可以看看rest_framework.viewsets里面的源码...,里面详细地写明了从GenericViewSet和APIView发展到ModelViewSet和ViewSet的过程,有助于理解里面的细节,也能在以后开发中遇到问题的时候更容易debug。...另外视图类的as_view方法决定了路由的分发机制,也是比较重要一个点。
0x01 django View 首先,我们使用django自带的view,获取一个课程的列表: # drf是通过json的格式进行数据交互的,所以这里也返回json数据 import json from...django.views.generic.base import View from django.core import serializers from django.http import HttpResponse...rest_framework.views import APIView from rest_framework.response import Response # 这个serializers是在其他文件自定义的...除此之外,可以重载get_queryset(),这样就不必设置'queryset=*',这样就变得更加灵活,可以进行完全的自定义。...viewset的功能 GenericViewSet继承了GenericAPIView,依然有get_queryset,get_serialize_class相关属性与方法,GenericViewSet
领取专属 10元无门槛券
手把手带您无忧上云