当前位置: 首页 > news >正文

Django视图写法

1.View:Django默认的视图基类,Django的HttpRequeset对象

2.APIView:REST-framework提供的所有视图的基类,继承自Django的View
    REST framework的Request对象

Request对象的数据是自动根据前端发送数据的格式进行解析之后的结果。

serializer = BookSerializer(book,many=True)    序列化,获取字段
serializer.data    获取序列化后的数据
serializer = BookSerializer(data=data)    反序列化,传入字段
serializer.is_valid(raise_exception=True)    校验并返回错误

3.GenericAPIView:继承自APIView,增加列表视图和详情视图的通用方法和属性

https://blog.csdn.net/qq_31742423/article/details/83241461

属性:提前将要调用的设置好,方法中直接调用就可以
queryset 设置结果集      ~queryset = BookInfo.objects.all()
serializer_class 设置序列化器    ~serializer_class = BookSerializer
lookup_field 查询指定的对象,默认为'pk'    ~lookup_field = 'id'

方法:
get_queryset(self) 返回视图使用的查询集    ~books = self.get_queryset()
get_serializer(self,_args, *_kwargs) 返回序列化器对象    ~serializer = self.get_serializer(book)
get_object(self) 返回详情视图所需的模型类数据对象    ~book = self.get_object()


# ListModelMixin            列表,获取全部对象
# CreateModelMixin          新增资源
# RetrieveModelMixin        索引,获取一个资源
# UpdateModelMixin             更新一个资源
# DestoryModelMixin     损毁,删除一个资源
调用的时候和GenericAPIView一样放在类的括号里,好像光放置首字母大写也可以

Patch    补丁,局部更新某一属性,user_name,Put方法的补充


4.三级视图(对GenericAPIView和Mixin的直接封装)
第3和4算是一种关系

mixins类,会返回不同的状态码
CreateAPIView    创造
ListAPIView    列表
RetrieveAPIView    检索
DestroyAPIView    损毁
UpdateAPIView    更新
ListCreateAPIView    列表创造
RetrieveUpdateAPIView    检索更新
RetrieveDestroyAPIView    检索删除
RetrieveUpdateDestroyAPIView    检索更新删除

导入封装的模型,通过下面就可以更加简洁
from rest_framework import mixins
class ProjectsView(mixins.ListModelMixin,
                   mixins.CreateModelMixin,
                   mixins.RetrieveModelMixin,
                   mixins.UpdateModelMixin,
                   mixins.DestroyModelMixin,
                   GenericAPIView):
    # 增加所需属性
    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)
    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)

5.ViewSet:继承自APIView

router = DefaultRouter()    创建默认的本机地址
router.register(r'booklist',views.BookModelViewset)
会生成两种url
user/    列表
user/3    详情
urlpatterns +=  router.urls    将建立好的url放在地址列表中


需要继承viewsets.ViewSet类
类的函数不需要使用get\post\delete等,可以自建其他函数,然后在路由中转
path('user/',view.MyViewSet.as_view({
    'get':'list',
}))


https://zhuanlan.zhihu.com/p/72527077


序列化:将数据库的数据模型转化为前端所需要的格式(json等)
反序列化:可以验证传入数据是否规范并保存

反序列化:拿到前端数据->序列化器的data->调用序列化器的is_vaid()方法
校验->调用序列化器的.sava()方法保存

~~~url.py~~~

# viewsets
# 封装drf路由
from rest_framework.routers import DefaultRouter
# 创建路由器
router=DefaultRouter()
# 注册路由
router.register(r'user_model_view_set',views.UserModelViewSet)
# 将生成好的路由放在原路由
urlpatterns+=router.urls


~~~views.py~~~

# 这里使用的viewset
from rest_framework import viewsets
from rest1.serializers import UserModelViewSetSerializers
# ViewSet
class UserModelViewSet(viewsets.ModelViewSet):
    queryset = UserInfo.objects.all()
    serializer_class = UserModelViewSetSerializers
    lookup_field = 'id'


~~~serializers.py~~~

# ModelSerializer
class UserModelViewSetSerializers(serializers.ModelSerializer):
    # 定义序列化器
    # class Meta做为嵌套类,主要目的是给上级类添加一些功能或者标准
    class Meta:
        # 指定序列化从那个模型映射字段
        model=UserInfo
        # 映射所有字段
        fields='__all__'
        # 填入指定字段
        # fields = ('user_name', 'password')
        # 除了这个字段
        # exclude = ('user_name',)
        # 含有外键的数据库,设置depth为整数,通常为1


 

相关文章:

Django视图写法

1.View:Django默认的视图基类,Django的HttpRequeset对象 2.APIView:REST-framework提供的所有视图的基类,继承自Django的View REST framework的Request对象 Request对象的数据是自动根据前端发送数据的格式进行解析之后的结果。 serializer Book…...

单臂路由实现不同VLAN之间设备通信

转载请注明出处 本实验为单臂路由配置,目的为让不同VLAN之间的设备能够互相通信。 1.首先,按照要求配置两个pc的ip地址,以pc0为例子: 2在交换机创建vlan10和vlan20 3.划分vlan,pc0为vlan10的设备,pc1为vla…...

Linux·进程控制(system V)

1. 共享内存 system V共享内存是最快的IPC形式,之前的管道是基于Linux内核开发的通讯方案,其读写接口都是现成的,因此内核设计者为了完成进程间通讯任务并不需要新增太多代码。而共享内存属于system V标准,是操作系统单独…...

华为云Stack名词解释

1、MRS MapReduce服务(MRS)是一种基于云计算平台的即开即用、稳定可靠、弹性伸缩、便捷管理的数据处理分析服务。 2、VBS 云硬盘备份服务(VBS,Volume Backup Service)可为云硬盘(EVS,Elastic…...

YoloV9改进策略:上采样改进|CARAFE,轻量级上采样|即插即用|附改进方法+代码

论文介绍 CARAFE模块概述:本文介绍了一种名为CARAFE(Content-Aware ReAssembly of FEatures)的模块,它是一种用于特征上采样的新方法。应用场景:CARAFE模块旨在改进图像处理和计算机视觉任务中的上采样过程&#xff0…...

【C++】多态的语法与底层原理

1.多态的概念 1.1 概念 多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会 产生出不同的状态。 举个例子:在现实当中,我们去火车站买票,一般都分三种情况&…...

RTP和RTCP的详细介绍及其C代码示例

RTP和RTCP的详细介绍及其C代码示例 RTP和RTCP简介RTP协议详解RTCP协议详解RTP和RTCP之间的关系C代码示例RTP和RTCP简介 RTP(Real-time Transport Protocol,实时传输协议)和RTCP(Real-time Transport Control Protocol,实时传输控制协议)是流媒体传输中常用的两个协议。R…...

深入浅出了解AI教育发展与落地应用情况

2023年,是生成式AI能力涌现的一年,通用大模型是其中的主旋律。经过一年的发展,通用大模型格局已初步形成,生成式AI也从能力展示走向应用落地。进入2024年,对生成式AI的讨论和实践也都转向如何赋能产业。相比于通用大模型,进入产业内的大模型需要的是对行业的Know-How,以…...

Hive数据库操作语法

数据类型 内部表和外部表 内部表 (CREATE TABLE table_name ......)未被external关键字修饰的即是内部表, 即普通表。 内部表又称管理表,内部表数据存储的位置由hive.metastore.warehouse.dir参数决定(默认:/user/h…...

容器架构-Docker的成长之路

目录 1. 什么是容器 2. 容器 vs 虚拟机 3. Docker极速上手指南 环境准备 3.1 配置docker源 3.2 下载镜像加速的配置 3.3 下载自动补全工具 4. Docker C/S架构 5. Docker的镜像管理 5.1 下载nginx:alpine镜像并查看 5.2 sl大法 5.3 删除镜像 5.4 镜像清理用的命令 5…...

关于我、重生到500年前凭借C语言改变世界科技vlog.14——常见C语言算法

文章目录 1.冒泡排序2.二分查找3.转移表希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力! 根据当前所学C语言知识,对前面知识进行及时的总结巩固,出了这么一篇 vlog 介绍当前所学知识能遇到的常见算法,这些算法是…...

简记Vue3(三)—— ref、props、生命周期、hooks

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...

ARM cpu算力KDMIPS测试

一、引言 KDMIPS(KiloDhrystone Million Instructions Per Second)是一种衡量处理器性能的指标,它表示处理器每秒钟可以执行多少百万条Dhrystone指令。 二、测试说明 1、将cpu模式调整为perfermance 2、将cpu的频率和gpu的频率调大最大 3、将ddr和各core的电压和频率调大最…...

自杀一句话木马(访问后自动删除)

在做安全测试时&#xff0c;例如文件上传时就要上传可以解析的脚本文件解析证明存在漏洞&#xff0c;这个时候就需要(访问后自动删除文件的一句话木马) PHP <?php echo md5(1);unlink(__FILE__); ?> 访问后自动删除...

Nginx 反向代理(解决跨域)

文章目录 前言一、同源策略二、跨域是什么&#xff1f;三、Nginx解决跨域1.前端示例代码2.说明 四、nginx反向代理配置五、启动nginx六、最终效果总结 前言 Nginx反向代理解决跨域 一、同源策略 定义&#xff1a;同源策略&#xff08;Same-Origin Policy&#xff09;是指浏览…...

gRPC-4种通信模式

4种通信模式 1、简单模式&#xff08;Simple RPC&#xff09; 简单模式&#xff1a;也称简单 RPC&#xff0c;即客户端发起一次请求&#xff0c;服务端响应处理后返回一个结果给客户端。 在 proto 文件中可如下定义&#xff1a; rpc SayHello(HelloRequest) returns (Hello…...

第五项修炼—系统思考

感谢合作伙伴的推荐&#xff0c;圆满结束为期两天的马上消费《第五项修炼—系统思考》项目&#xff01;这不仅是一次培训&#xff0c;更是未来实践的起点。 两天的系统思考学习让我们看到&#xff0c;在技术管理的每个决策背后&#xff0c;都蕴含着深刻的系统关联。希望各位技…...

PYNQ 框架 - VDMA驱动 - 帧缓存

目录 1. 简介 2. 代码分析 2.1 _FrameCache 类定义 2.1.1 xlnk.cma_array() 2.1.2 pointerNone 2.1.3 PynqBuffer 2.2 _FrameCache 例化与调用 2.3 _FrameCache 测试 2.4 _FrameList 类定义 2.5 _FrameList 例化与调用 2.6 _FrameList 测试 3. 帧的使用 3.1 读取帧…...

Java导出Word文档的几种方法

文章目录 1. 使用 Apache POI2. 使用 Docx4j3. 使用 JODConverter4. 使用 FreeMarker 模板 在 Java 中导出 Word 文档可以通过多种库和方法实现。以下是几种常用的方法&#xff1a; 1. 使用 Apache POI Apache POI 是一个强大的库&#xff0c;可以用来读写 Microsoft Office 格…...

OceanBase V4.3.3,首个面向实时分析场景的GA版本发布

在10月23日举办的 OceanBase年度发布会 上&#xff0c;我们怀着激动之情&#xff0c;正式向大家宣布了 OceanBase 4.3.3 GA 版的正式发布&#xff0c;这也是OceanBase 为实时分析&#xff08;AP&#xff09;场景打造的首个GA版本。 2024 年初&#xff0c;我们推出了 4.3.0 版本…...

别再混淆了!深入对比Vivado中AXI DMA IP核与PS端DMA控制器的角色与分工

深入解析Vivado中AXI DMA与PS端DMA控制器的协同设计 在Zynq/MPSoC平台的软硬件协同开发中&#xff0c;数据搬运效率往往成为系统性能的瓶颈。许多开发者虽然能够熟练使用Vivado中的AXI DMA IP核完成基本数据传输&#xff0c;却对PL端AXI DMA与PS端DMA控制器之间的分工协作机制存…...

小红书数据采集系统深度探索:从技术原理到实战落地

小红书数据采集系统深度探索&#xff1a;从技术原理到实战落地 【免费下载链接】XiaohongshuSpider 小红书爬取 项目地址: https://gitcode.com/gh_mirrors/xia/XiaohongshuSpider 在当今数据驱动的时代&#xff0c;小红书作为内容丰富的社交平台&#xff0c;其数据价值…...

游戏报错终极解决方案 DirectX修复工具深度解析

在Windows操作系统环境下&#xff0c;DirectX组件是游戏和多媒体软件运行的核心基础。 随着游戏产业的快速发展&#xff0c;越来越多的玩家在运行游戏时遇到了各种技术问题。 其中&#xff0c;DirectX组件缺失、损坏、报错是最为常见的问题之一&#xff0c;严重影响了用户的游戏…...

FPGA实战:3级CIC滤波器Verilog实现与仿真(附完整代码)

FPGA实战&#xff1a;3级CIC滤波器Verilog实现与仿真全解析 在数字信号处理领域&#xff0c;CIC&#xff08;Cascaded Integrator-Comb&#xff09;滤波器因其结构简单、运算高效的特点&#xff0c;成为多速率系统中的关键组件。本文将深入探讨3级CIC滤波器的Verilog实现细节&a…...

HunyuanVideo-Foley 社区贡献指南:如何提交Prompt案例与优化建议

HunyuanVideo-Foley 社区贡献指南&#xff1a;如何提交Prompt案例与优化建议 1. 为什么你的贡献很重要 开源项目的生命力来自社区的共同参与。HunyuanVideo-Foley作为一款专注于音效生成的AI模型&#xff0c;其效果提升离不开用户的实际使用反馈和创意贡献。你的每一次Prompt…...

基于YOLOv8深度学习的驾驶员分心行为实时检测与语音预警系统【python源码+Pyqt5界面+数据集】

1. 项目背景与核心价值 开车时低头看手机、点烟、喝饮料这些看似平常的小动作&#xff0c;每年导致全球超过120万起交通事故。我去年参与某物流车队安全系统升级时&#xff0c;亲眼见过一个司机因为伸手拿水杯导致车辆偏离车道的事故录像——整个过程不到3秒。这正是我们开发这…...

AnotherRedisDesktopManager:提升Redis管理效率的全方位解决方案

AnotherRedisDesktopManager&#xff1a;提升Redis管理效率的全方位解决方案 【免费下载链接】AnotherRedisDesktopManager qishibo/AnotherRedisDesktopManager: Another Redis Desktop Manager 是一款跨平台的Redis桌面管理工具&#xff0c;提供图形用户界面&#xff0c;支持…...

GTE模型与Visual Studio智能编程插件的集成

GTE模型与Visual Studio智能编程插件的集成 1. 引言 作为一名每天要写大量代码的程序员&#xff0c;我经常遇到这样的情况&#xff1a;突然想不起来某个API的具体用法&#xff0c;或者需要查找某个功能的实现示例。传统的做法是打开浏览器&#xff0c;在各种文档和论坛中搜索…...

Java全栈开发面试实战:从基础到进阶的深度解析

Java全栈开发面试实战&#xff1a;从基础到进阶的深度解析 面试官与应聘者的对话 面试官&#xff08;李明&#xff09;&#xff1a;你好&#xff0c;我是李明&#xff0c;负责这次技术面试。很高兴见到你&#xff0c;先简单介绍一下你自己吧。 应聘者&#xff08;张晨&#xff…...

RWKV7-1.5B-g1a实操手册:基于CSDN GPU平台的完整调用流程

RWKV7-1.5B-g1a实操手册&#xff1a;基于CSDN GPU平台的完整调用流程 1. 模型简介 rwkv7-1.5B-g1a 是基于新一代 RWKV-7 架构的多语言文本生成模型&#xff0c;特别适合中文场景下的轻量级应用。这个1.5B参数的版本在保持较高生成质量的同时&#xff0c;对硬件要求非常友好&am…...