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

Django的FBV和CBV

Django的FBV和CBV

基于django开发项目时,对于视图可以使用 FBV 和 CBV 两种模式编写。

  • FBV,function base views,其实就是编写函数来处理业务请求。

    from django.contrib import admin
    from django.urls import path
    from app01 import views
    urlpatterns = [path('users/', views.users),
    ]
    
    from django.http import JsonResponsedef users(request,*args, **kwargs):if request.method == "GET":return JsonResponse({"code":1000,"data":"xxx"})elif request.method == 'POST':return JsonResponse({"code":1000,"data":"xxx"})...
    
  • CBV,class base views,其实就是编写类来处理业务请求。

    from django.contrib import admin
    from django.urls import path
    from app01 import views
    urlpatterns = [path('users/', views.UserView.as_view()),
    ]
    
    from django.views import Viewclass UserView(View):def get(self, request, *args, **kwargs):return JsonResponse({"code": 1000, "data": "xxx"})def post(self, request, *args, **kwargs):return JsonResponse({"code": 1000, "data": "xxx"})
    

其实,CBV和FBV的底层实现本质上相同的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BRYWjXoN-1691020686220)(assets/image-20210819114755157.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uTin1A4e-1691020686221)(assets/image-20210819115517407.png)]

CBV,其实就是在FBV的基础上进行的功能的扩展,根据请求的方式不同,直接定位到不同的函数中去执行。

如果是基于django编写restful API,很显然使用CBV的方式会更加简洁,因为restful规范中就是根据method不同来执行不同操作。

基于django的CBV和restful规范开发实战案例:

# urls.pyfrom django.urls import path
from app01 import viewsurlpatterns = [# http://www.xxx.com/api/v1/users/path('api/<str:version>/users/', views.UserView.as_view()),# http://www.xxx.com/api/v1/users/2/path('api/<str:version>/users/<int:pk>/', views.UserView.as_view()),]
# views.pyfrom django.views import View
from django.http import JsonResponseclass UserView(View):def get(self, request, version, pk=None):if not pk:# 请求用户列表info = {"code": 0,"data": [{"id": 1, "name": "武沛齐"},{"id": 1, "name": "武沛齐"},]}return JsonResponse(info)else:# 获取ID=pk的用户信息,并返回info = {"code": 0,"data": {"id": 1, "name": "武沛齐"}}return JsonResponse(info)def post(self, request, version):# 新增用户,读取 request.POST 中提交的数据并添加到数据库中info = {"code": 0,"data": {"id": 1, "name": "武沛齐"}}return JsonResponse(info)def delete(self, request, version, pk):# 删除id=pk的用户info = {"code": 0,"data": {}}return JsonResponse(info)def put(self, request, version, pk):# 读取request.POST中的数据 + pk,更新数据库中的用户信息info = {"code": 0,"data": {"id": 1, "name": "武沛齐"}}return JsonResponse(info)def patch(self, request, version, pk):# 读取request.POST中的数据 + pk,更新数据库中的用户信息info = {"code": 0,"data": {"id": 1, "name": "武沛齐"}}return JsonResponse(info)

从上面的示例看来,基于django框架完全可以开发restful API。

django restframework框架 是在django的基础上又给我们提供了很多方便的功能,让我们可以更便捷基于django开发restful API,来一个简单的实例,快速了解下:

  • 基于django

  • 基于django + django restframework框架

相关文章:

Django的FBV和CBV

Django的FBV和CBV 基于django开发项目时&#xff0c;对于视图可以使用 FBV 和 CBV 两种模式编写。 FBV&#xff0c;function base views&#xff0c;其实就是编写函数来处理业务请求。 from django.contrib import admin from django.urls import path from app01 import view…...

[每周一更]-(第57期):用Docker、Docker-compose部署一个完整的前后端go+vue分离项目

文章目录 1.参考项目2.技能点3.GO的Dockerfile配置后端的结构如图Dockerfile先手动docker调试服务是否可以启动报错 4.Vue的Dockerfile配置前端的结构如图nginx_docker.confDockerfile构建 5.docker-compose 整合前后端docker-compose.yml错误记录&#xff08;1&#xff09;ip端…...

springboot-mybatis的增删改查

目录 一、准备工作 二、常用配置 三、尝试 四、增删改查 1、增加 2、删除 3、修改 4、查询 五、XML的映射方法 一、准备工作 实施前的准备工作&#xff1a; 准备数据库表 创建一个新的springboot工程&#xff0c;选择引入对应的起步依赖&#xff08;mybatis、mysql驱动…...

HTML5(H5)的前生今世

目录 概述HTML5与其他HTML的区别CSS3与其他CSS版本的区别总结 概述 HTML5是一种用于构建和呈现网页的最新标准。它是HTML&#xff08;超文本标记语言&#xff09;的第五个版本&#xff0c;于2014年由万维网联盟&#xff08;W3C&#xff09;正式推出。HTML5的前身可以追溯到互联…...

抽象工厂模式(Abstract Factory)

抽象工厂模式提供一个创建一组相关或相互依赖的对象的接口&#xff0c;而无须指定它们具体的类&#xff0c;每个子类可以生产一系列相关的产品。 The Abstract Factory Pattern is to provide an interface for creating families of related or dependent objects without s…...

Java 实现下载文件工具类

package com.liunian.utils;import lombok.SneakyThrows;import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream;/*** ClassName DownloadFileUtils* Author liuyan 下载文件工具类…...

C# 12 预览版的新功能

作者&#xff1a;Kathleen Dollard 排版&#xff1a;Alan Wang Visual Studio 17.7 Preview 3 和 .NET 8 Preview 6 的发布推进了 C# 12的发展。此预览版包含的功能为将来的性能增强奠定了基础。现在&#xff0c;您能够在库中更方便的使用内联函数。此预览版首次推出了一项实验…...

34.利用matlab解 多变量多目标规划问题(matlab程序)

1.简述 学习目标&#xff1a;适合解 多变量多目标规划问题&#xff0c;例如 收益最大&#xff0c;风险最小 主要目标法&#xff0c;线性加权法&#xff0c;权值我们可以自己设定。 收益函数是 70*x(1)66*x(2) &#xff1b; 风险函数是 0.02*x(1)^20.01*x(2)^20.04*(x…...

暑假刷题第18天--7/30

165. 小猫爬山 - AcWing题库(dfs) #include<iostream> #include<string> #include<bitset> #include<cstring> #include<algorithm> using namespace std; const int N18; bool vis[N]; int a[N],n,ans,sum[N],k; bool cmp(int x,int y){retur…...

通向架构师的道路之Apache整合Tomcat

一、先从J2EE工程的通用架构说起 这是一个通用的Web即B/S工程的架构&#xff0c;它由&#xff1a; Web Server App Server DB Server 三大部分组成&#xff0c;其中&#xff1a; Web Server 置于企业防火墙外&#xff0c;这个防火墙&#xff0c;大家可以认为是…...

如何消除“信息孤岛”对业务增长的威胁?

根据CMSWire的数据&#xff0c;员工平均每天要花36%的时间来查找和整合信息。但44%的情况下&#xff0c;他们找不到信息。这种时间和精力的浪费就是信息孤岛造成的。 什么是信息孤岛&#xff1f; 当部门存储数据并限制其他人访问数据时&#xff0c;就会出现信息孤岛&#xff…...

Kali部署dvwa和pikachu靶场

kali换源 进入 vim /etc/apt/sources.list deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib替换完后更新源 apt-get upadteDVWA靶场环境搭建 使用git从github上把DV…...

​LeetCode解法汇总722. 删除注释

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 给一个 C 程序&#xff0c;删除程序中的注释。这个程序source是一个数组&#x…...

Linux中的firewall-cmd

2023年8月4日&#xff0c;周五上午 目录 打开端口关闭端口查看某个端口是否打开查看当前防火墙设置firewall-cmd中的服务在防火墙中什么是服务&#xff1f;为什么会有服务&#xff1f;打开或关闭服务查看某个服务是否打开firewall-cmd中的 zones查看所有可用的zones&#xff0…...

python 最大归一化

最大归一化是将数据转化到[-1,1]范围之间。公式如下 其中|X|max为x特征的绝对值的最大值。 数据标准化算法介绍—数据建模工具_预处理_Max_字段 """ 最大绝对值归一化&#xff08;max abs normalization &#xff09;&#xff1a;也就是将数值变为单位长度&…...

Netty:ByteBuf写入数据、读出数据

介绍 Netty的ByteBuf数据位置索引是0开始的。 可以用ByteBuf的getByte(int index)方法从指定位置读出一字节&#xff0c;这个操作不会改变ByteBuf的readerIndex 或者 writerIndex 的位置。如果index小于0&#xff0c;或者index 1大于ByteBuf的容量&#xff0c;就会抛出IndexO…...

C++(15):面向对象程序设计

面向对象程序设计概述 面向对象程序设计&#xff08;object-oriented programming&#xff09;的核心思想是数据抽象、继承和动态绑定。 1.使用数据抽象&#xff0c;可以将类的接口与实现分离&#xff1b; 2.使用继承&#xff0c;可以定义相似的类型并对其相似关系建模&#x…...

2023牛客暑期多校训练营6-A Tree

2023牛客暑期多校训练营6-A Tree https://ac.nowcoder.com/acm/contest/57360/A 文章目录 2023牛客暑期多校训练营6-A Tree题意解题思路代码 题意 解题思路 最大价值和这个数据范围&#xff0c;一眼 d p dp dp。 直接在树上并不好处理&#xff0c;问题是如何有效转化、处理…...

Vc - Qt - QPainter::SmoothPixmapTransform及QPainter::Antialiasing

QPainter::SmoothPixmapTransform是一个标志&#xff0c;用于指定绘制操作中的平滑像素变换行为。当使用QPainter绘制一幅图像时&#xff0c;设置SmoothPixmapTransform标志可以使图像变换过程更加平滑&#xff0c;减少锯齿状边缘的出现。此标志通常用于绘制缩放后图像的情况。…...

【练习】条件变量:创建三个线程 id号为ABC,三个线程循环打印自己的ID号,运行顺序为 ABCABC

题目&#xff1a; 创建三个线程 id号为ABC&#xff0c;三个线程循环打印自己的ID号&#xff0c;运行顺序为 ABCABC......要求使用条件变量 #include <stdio.h> #include <pthread.h> #include <unistd.h>//创建互斥锁 pthread_mutex_t mutex PTHREAD_MUTE…...

奶奶都能看懂的 C# —— 手把手 LINQ懈

一、 什么是 AI Skills&#xff1a;从工具级到框架级的演化 AI Skills&#xff08;AI 技能&#xff09; 的概念最早在 Claude Code 等前沿 Agent 实践中被强化。最初&#xff0c;Skills 被视为“工具级”的增强&#xff0c;如简单的文件读写或终端操作&#xff0c;方便用户快速…...

基于springboot+vue红色教育基地管理系统hx0944FHZG

文章目录详细视频演示技术介绍功能介绍核心代码系统效果图源码获取详细视频演示 文章底部名片&#xff0c;获取项目的完整演示视频&#xff0c;免费解答技术疑问 技术介绍 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomca…...

MedGemma 1.5效果展示:对‘慢性肾病贫血管理’的ESA使用指征→铁状态评估→给药路径推演

MedGemma 1.5效果展示&#xff1a;对‘慢性肾病贫血管理’的ESA使用指征→铁状态评估→给药路径推演 1. 引言&#xff1a;当AI遇见临床诊疗路径 想象一下&#xff0c;你是一位肾内科医生&#xff0c;面对一位慢性肾病&#xff08;CKD&#xff09;合并贫血的患者。你需要快速梳…...

面试官总爱问的LRU缓存,我用Java手写了一个(附完整代码和避坑点)

面试官最爱问的LRU缓存&#xff1a;从原理到Java实战的深度解析 为什么LRU缓存是面试中的常青树&#xff1f; 在技术面试中&#xff0c;设计一个高效的缓存系统几乎是必考题&#xff0c;而LRU&#xff08;Least Recently Used&#xff09;算法则是这类问题中最经典的考察点。…...

软件SLA介绍(Service Level Agreement,服务等级协议)(可签约SLA:服务提供方(厂商)与客户之间,就服务质量达成的可量化承诺协议)SLO服务目标、SLI服务指标、吞吐量

文章目录软件 SLA 是什么&#xff1f;一文讲清“可签约 SLA”的本质与落地一、什么是 SLA&#xff1f;二、什么是“可签约 SLA”&#xff1f;1️⃣ 指标可量化2️⃣ 有明确统计口径3️⃣ 有违约责任&#xff08;关键&#xff01;&#xff09;三、SLA vs SLO vs SLI&#xff08;…...

面向高端商用咖啡机的功率MOSFET选型分析——以高效能、高可靠电源与加热泵驱动系统为例

在精品咖啡文化与商业运营效率需求并重的背景下&#xff0c;高端商用咖啡机作为保障出品质量与连续运行稳定的核心设备&#xff0c;其性能直接决定了加热效率、压力控制精度和长期可靠性。电源与加热泵驱动系统是咖啡机的“心脏与肌肉”&#xff0c;负责为锅炉加热器、水泵、磨…...

Qwen3.5-9B-AWQ-4bit多模态部署案例:双卡RTX 4090D一键启用视觉理解

Qwen3.5-9B-AWQ-4bit多模态部署案例&#xff1a;双卡RTX 4090D一键启用视觉理解 1. 平台介绍 Qwen3.5-9B-AWQ-4bit是一款支持图像理解的多模态模型&#xff0c;能够结合上传图片与文字提示词&#xff0c;输出中文分析结果。该模型特别适合处理以下任务&#xff1a; 图片主体…...

Flutter ClipRRect

ClipRRect 是 Flutter 中用于将子组件裁剪为圆角矩形的核心 Widget&#xff0c;常用于实现图片、容器、卡片的圆角效果。一、核心属性dartconst ClipRRect({Key? key,BorderRadiusGeometry borderRadius BorderRadius.zero, // 圆角CustomClipper<RRect>? clipper, …...

暗黑3智能战斗伴侣:D3KeyHelper重新定义高效刷图体验

暗黑3智能战斗伴侣&#xff1a;D3KeyHelper重新定义高效刷图体验 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 当你沉浸在暗黑破坏神3的秘境战斗中…...

我不是在用 AI 助手,我在把自己的能力沉淀成组织资产衫

1. 什么是 Apache SeaTunnel&#xff1f; Apache SeaTunnel 是一个非常易于使用、高性能、支持实时流式和离线批处理的海量数据集成平台。它的目标是解决常见的数据集成问题&#xff0c;如数据源多样性、同步场景复杂性以及资源消耗高的问题。 核心特性 丰富的数据源支持&#…...