京西商城——基于viewset视图集开发评论接口

2024-04-04 01:04

本文主要是介绍京西商城——基于viewset视图集开发评论接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在使用GenericAPIView和Mixins开发时,确实可以大大提高编码的速度以及减少代码量,但是在一个视图里并不能实现5个基础的请求方法,要用两个视图类来完成。所以我们可以使用viewset(视图集)来将两个视图类合并

如果要使用viewset的话,要配置urls以将HTTP请求映射到ViewSet

comment/views.py
from rest_framework import viewsets
from apps.comment.models import Comment
from apps.comment.serializers import CommentSerializerclass CommentViewSet(viewsets.ModelViewSet):queryset = Comment.objectsserializer_class = CommentSerializerdef get_queryset(self):# 确保返回标准的Django QuerySetreturn Comment.objects.all()
comment/urls.py
from django.urls import path
from apps.comment.views import CommentViewSeturlpatterns = [path('', CommentViewSet.as_view({'get': 'list','post': 'create'})),path('<int:pk>/', CommentViewSet.as_view({'get': 'retrieve','post': 'update','delete': 'destroy'}))
]

在这里插入图片描述

可以看到在基于ViewSet开发的CommentViewSet接口时不需要为每种HTTP请求方法编写对应的处理方法

ModelViewSet 同时包含了ListModelMixinCreateModelMixinRetrieveModelMixinUpdateModelMixinDestroyModelMixin,包含了所有的CURD。

如果你只需要获取和创建操作,你可以使用ReadOnlyModelViewSet,它只包含ListModelMixinRetrieveModelMixin


在viewset类中,ViewSetMixin是所有类的基类,正是因为在它之中重写了as_view方法,这是将ViewSet转换为可调用视图的关键步骤。

并定义了action参数,通过actions关键字参数,你可以指定哪些HTTP方法应该映射到ViewSet中的哪些动作。

这是源码对ViewSetMixin这个类的解释:

"""This is the magic.Overrides `.as_view()` so that it takes an `actions` keyword that performsthe binding of HTTP methods to actions on the Resource.For example, to create a concrete view binding the 'GET' and 'POST' methodsto the 'list' and 'create' actions...view = MyViewSet.as_view({'get': 'list', 'post': 'create'})"""

基于generics开发时不过也就是把GenericAPIView与ListModelMixinCreateModelMixinRetrieveModelMixinUpdateModelMixinDestroyModelMixin相互组合,只不过在使用时就没有想viewset那样高抽象了,基于generics开发时就需要自己编写各个请求对应的方法了。

在这里插入图片描述

若有错误与不足请指出,关注DPT一起进步吧!!!

这篇关于京西商城——基于viewset视图集开发评论接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/874432

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

基于Redisson实现分布式系统下的接口限流

《基于Redisson实现分布式系统下的接口限流》在高并发场景下,接口限流是保障系统稳定性的重要手段,本文将介绍利用Redisson结合Redis实现分布式环境下的接口限流,具有一定的参考价值,感兴趣... 目录分布式限流的核心挑战基于 Redisson 的分布式限流设计思路实现步骤引入依赖定义限流注解实现

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1