美文网首页
ModelViewSet 笔记

ModelViewSet 笔记

作者: tingshuo123 | 来源:发表于2019-03-18 15:03 被阅读0次

ModelViewSet 源码

class ModelViewSet(mixins.CreateModelMixin,
                   mixins.RetrieveModelMixin,
                   mixins.UpdateModelMixin,
                   mixins.DestroyModelMixin,
                   mixins.ListModelMixin,
                   GenericViewSet):
    """
    A viewset that provides default `create()`, `retrieve()`, `update()`,
    `partial_update()`, `destroy()` and `list()` actions.
    """
    pass

使用

from rest_framework import serializers
from rest_framework.request import Request
from rest_framework.viewsets import ModelViewSet

from apps.user.models import User
from libs.api_tools.api_response import success_response
from libs.api_tools.pagination import StandardResultsSetPagination
from libs.swagger.swagger_param import swagger_doc


class CreateUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        exclude = ('flag', 'password')


class UserViewSet(ModelViewSet):

    fields = (
        swagger_doc(name="Authorization", description='用户token', location='header', required=False),
    )

    # 认证
    # authentication_classes = [Authentication, ]
    # queryset 和 serializer_class  必须指定
    queryset = User.objects.all()
    serializer_class = CreateUserSerializer
    pagination_class = StandardResultsSetPagination

    def retrieve(self, request, pk=None):
        """ 用户详情 """
        # 获取实例
        user = self.get_object()
        # 序列化
        serializer = self.get_serializer(user)
        return success_response(serializer.data)

    def create(self, request, *args, **kwargs):
        """ 创建用户 """

        serializer = self.get_serializer(data=request.data)
        # save 前必须先调用 is_valid()
        serializer.is_valid(raise_exception=True)
        serializer.save()

        return success_response(serializer.data)

    def update(self, request: Request, *args, **kwargs):
        """ 更新用户信息 """

    def destroy(self, request: Request, *args, **kwargs):
        """ 删除用户 """

        return success_response()

    def list(self, request: Request, *args, **kwargs):
        """ 获取用户列表 """

        return success_response()

url 配置

from django.conf.urls import url, include
# 定义路由
from rest_framework.routers import SimpleRouter

from apps.user import user_views

router = SimpleRouter()

router.register(r'test-user', user_views.UserViewSet, base_name='user')

urlpatterns = [
    url('^', include(router.urls)),
]

swagger 效果


结果

相关文章

  • ModelViewSet 笔记

    ModelViewSet 源码 使用 url 配置 swagger 效果

  • drf

    class StudentViewSet(viewsets.ModelViewSet): -查看,编辑用户数据的a...

  • 9. 视图

    a. GenericViewSet urls.py views.py b. ModelViewSet(自定义URL...

  • Django rest framework批量删除

    使用ModelViewSet可以自动生成删除单个资源的方法,删除的url是/resource_name/pk/。如...

  • 开发笔记目录查看

    笔记一: 笔记二: 笔记三: 笔记四: 笔记五: 笔记六:

  • 目录

    羊皮笔记01 羊皮笔记02 羊皮笔记03 羊皮笔记04 羊皮笔记05 羊皮笔记06 羊皮笔记07

  • 《大江大河》笔记若干(一)

    后续笔记若干…… 后续笔记若干…… 后续笔记若干…… 后续笔记若干…… 后续笔记若干……

  • 记笔记分为闪念笔记、文献笔记和永久笔记

    记笔记分为闪念笔记、文献笔记和永久笔记 7/10 1,记闪念笔记 2,记文献笔记 3,记永久笔记 ——申克•阿伦斯...

  • 卡片笔记上记录什么?

    卡片可以用来记录四种笔记,分别是:闪念笔记、文献笔记、永久笔记、项目笔记。 1、闪念笔记(Fleeting Not...

  • MARKDOWN学习笔记

    标题 # MARKDOWN学习笔记 MARKDOWN学习笔记 MARKDOWN学习笔记- MARKDOWN学习笔记...

网友评论

      本文标题:ModelViewSet 笔记

      本文链接:https://www.haomeiwen.com/subject/uqovmqtx.html