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

Django系列之DRF简单使用

基于ModelViewSets的简单使用

models.py

from django.db import modelsclass AuthorDetail(models.Model):gender = models.CharField(max_length=8)birthday = models.DateField()telephone = models.BigIntegerField()addr = models.CharField(max_length=64)class Author(models.Model):name = models.CharField(max_length=32)age = models.IntegerField()ad = models.OneToOneField(AuthorDetail, on_delete=models.CASCADE, null=True)def __str__(self):return self.name

serializers.py

from rest_framework import serializersclass AuthorSerializer(serializers.ModelSerializer):class Meta:model = Authorfields = "__all__"# 检验条件extra_kwargs = {"age": {"min_value": 0, "max_value": 200}}

app01/views.py

from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.viewsets import ModelViewSetfrom app01.models import Author
from app01.serializers import AuthorSerializerclass AuthorModelViewsets(ModelViewSet):queryset = Author.objects.all()serializer_class = AuthorSerializer@action(methods=["get"], detail=False)          # detail=False or True: True: 系统会自动在生成的路由中添加pk值def top3(self, request):top3 = self.queryset.order_by("-age")[:3]serializer = AuthorSerializer(instance=top3, many=True)return Response(serializer.data)@action(methods=["get"], detail=True)       # 如果视图逻辑中需要pk值,detail就得是Truedef detailone(self, request, pk):author_detail = Author.objects.get(pk=pk)print(author_detail)return Response({"name": author_detail.name, "age": author_detail.age})

project/urls.py

from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path("league/", include("app01.urls")),
]

app01/urls.py

from rest_framework.routers import SimpleRouterfrom app01.views import AuthorModelViewsetsurlpatterns = []router = SimpleRouter()
router.register("author", AuthorModelViewsets)urlpatterns += router.urls

使用 SimpleRouter() 可以帮我们实现五个基础的 action 方法:
{“get”: “list”, “post”: “create”, “get/id”: “retrieve”, “put”: “update”, “delete”: “`destroy”}

如果需要增加一些其他的路由视图,就需要用 action 声明了。

action声明

如果需要增加一些其他自定义视图函数,则需要使用到 action 装饰器:

from rest_framework.decorators import action@action(methods=["get"], detail=False)
def top3(self, request):...@action(methods=["get"], detail=True)
def detailone(self, request, pk):...

detail 参数: True or False,如果视图中需要用到pk值,那就让 detail=True
True:系统会自动在生成的路由中添加pk值,比如
在这里插入图片描述
False:不会添加pk值到路由中。

相关文章:

Django系列之DRF简单使用

基于ModelViewSets的简单使用 models.py from django.db import modelsclass AuthorDetail(models.Model):gender models.CharField(max_length8)birthday models.DateField()telephone models.BigIntegerField()addr models.CharField(max_length64)class Author(models…...

新闻标题文本分类任务

目录 知识回顾使用debug调试 知识回顾 预处理内容 文本主要进行清洗、分词/分字 ID替换(不希望计算机看到文字,而是ID),通过语料表来表示,根据频率高低来分配ID号 文本的ID映射到文本的一个特征向量,进行词嵌入(Embedding)&…...

自己实现MyBatis 底层机制--抽丝剥茧(上)

😀前言 本篇博文是学习过程中的笔记和对于MyBatis底层机制的分析思路,希望能够给您带来帮助😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到…...

Django后端执行成功或失败状态码

后端执行成功或失败以状态码的形式告诉前端,处理成功返回200系列状态码,执行前端then里面的代码;处理失败返回400/500系列状态码,执行catch里面的代码。 200 OK :服务器成功返回用户请求的数据 201 CREATED &#xff…...

Prometheus中的关键设计

1、标准先行,注重生态 Prometheus 最重要的规范就是指标命名方式,数据格式简单易读。比如,对于应用层面的监控,可以要求必须具备这几个信息。 指标名称 metric Prometheus 内置建立的规范就是叫 metric(即 __name__…...

Centos7 安装yum

1、检查主机名和网络并且配置/etc/hosts文件 查看主机名:hostname 查看ip :ifconfig vi /etc/hosts//添加把主机名和IP配置进去hosts文件192.18.56.111 orcale12c2、关闭防火墙 systemctl status firewalld.service//检查防火墙状态 暂时关闭防火墙,下…...

无涯教程-Lua - 简介

Lua是一种轻量语言,它的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快。它用ANSI C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。和许多“大而全”的语言不一样,网络通信…...

【第一阶段】kotlin语言引用数据类型

Java语言中有两种数据类型 第一种:基本数据类型 如int double等 第二种:引用数据类型。如String kotlin只有一种数据类型,看起来都是引用数据类型,实际上编译器会在Java字节码中,修改成基本类型 //Java语言中有两种数…...

BUU [网鼎杯 2020 朱雀组]phpweb

BUU [网鼎杯 2020 朱雀组]phpweb 众生皆懒狗。打开题目,只有一个报错,不知何从下手。 翻译一下报错,data()函数:,还是没有头绪,中国有句古话说的好“遇事不决抓个包” 抓个包果然有东西,仔细一看这不就分别是函数和参…...

使用WebMvcConfigurationSupport后导致原来返回的json数据变为了xml的解决方法

问题 未使用WebMvcConfigurationSupport拦截时返回的数据都是JSON格式,使用WebMvcConfigurationSupport做拦截后数据的返回变为了XML的格式。 原因 在Spring框架中,WebMvcConfigurationSupport 是一个类,它可以用于自定义Spring MVC的配置…...

如何判断一个枚举值是否存在(Check if an Enum Value Exists in Java)

目录 Searching an Enum by NameSearching an Enum by ValueSearching an Enum by Integer ValueExceptions Thrown from Search Methods Searching an Enum by Name public enum Direction {EAST, WEST, SOUTH, NORTH;public static Direction findByName(String name) {Dire…...

网工内推 | 网络安全工程师,最高15K,有高温补贴

01 超圣信华 招聘岗位:网络安全工程师 职责描述: 1. 负责网络安全产品的售前沟通交流、现状调研、方案设计、产品测试、产品选型和招投标等工作。 2. 负责网络安全集成项目的实施管理、项目交付文档编制以及项目验收等工作。 3. 负责网络安全产品的售后…...

Android—ADB命令

文章目录 ADB常用命令 ADB常用命令 ADB常用命令如下: 方法描述adb help查看ADB命令帮助adb devices查看Android设备及端口号adb connect连接Android设备adb start-server开启服务adb kill-server关闭服务adb install ***.apk安装Android应用adb install -r ***.ap…...

音视频知识:MPEG-4、H264、MP4、AAC之间的关系

MPEG-4 一种编码标准。是国际标准化组织 (ISO) 主要针对消费类应用,已经针对运动图像压缩定义的标准。MPEG(Moving Picture Experts Group)标准包括 MPEG1、MPEG2与 MPEG4。 MPEG-4标准目前分为27个部分,统称为ISO/IEC14496国际标…...

智能门锁的无线通讯协议有哪些?主要特点是什么?

智能门锁的无线通讯协议主要有以下几种: Wi-Fi:Wi-Fi是一种基于无线局域网的无线通信协议,可以快速传输数据,并支持互联网连接。 ZigBee:ZigBee是一种低功耗、低成本的无线通信协议,适用于大量传感器和设…...

机器学习——异常检测

异常点检测(Outlier detection),⼜称为离群点检测,是找出与预期对象的⾏为差异较⼤的对象的⼀个检测过程。这些被检测出的对象被称为异常点或者离群点。异常点(outlier)是⼀个数据对象,它明显不同于其他的数据对象。异…...

小研究 - 一种复杂微服务系统异常行为分析与定位算法(一)

针对极端学生化偏差(Extreme Studentized &#…...

代码版本管理工具 git

1. 去B站看视频学习,只看前39集: 01-Git概述(Git历史)_哔哩哔哩_bilibili 2.学习Linux系统文本编辑器的使用 vi编辑器操作指令分享 (baidu.com) (13条消息) nano编辑器的使用_SudekiMing的博客-CSDN博客 windows下载安装Git官…...

【计算机视觉中的 GAN 】如何稳定GAN训练(3)

一、说明 在上一篇文章中,我们达到了理解未配对图像到图像翻译的地步。尽管如此,在实现自己的超酷深度GAN模型之前,您必须了解一些非常重要的概念。如本文所提的GAN模型新成员的引入:Wasserstein distance,boundary eq…...

一文讲清楚地图地理坐标系

前言 我最近在做一个和地图有关的项目,这里本人地图采用的是mapbox,其中涉及一个功能需要根据用户输入的地点直接定位到地图上的对应的位置,本人开始想的是直接调用百度的接口根据地名直接获取坐标,发现在地图上的位置有偏移不够…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...