Django自学笔记 7-1 基于类的视图(Class-based views)介绍

手把手教你实现阿克曼ROS小车的运动控制 本文详细介绍了如何从零开始实现阿克曼ROS小车的运动控制。内容涵盖硬件搭建、STM32底层PID速度与舵机控制、ROS层阿克曼运动学模型解析,以及上下位机通信协议设计。通过手把手的代码示例和调试步骤,帮助机器人爱好者与开发者掌握将高级速度指令转化为小车具体动作的全流程,实现流畅的阿克曼转向控制。 阅读详情

————总目录——前言——框架版本————

======================= 大爽歌作,made by big shuang =======================

一、基于类的视图(Class-based views)介绍

1 介绍

Class-based views (CBVs) are views generated from models.

Class-based views:基于模型自动生成的视图。
在web开发中,为模型(models)制作各种各样的视图是工作量很大的事情,
Class-based views简化了这些工作。

2 代码

CBVs可以直接使用,例如在urls.py里直接使用CreateView来添加学生实例。
其中每个参数的意思我们在本文最后面解释

from django.urls import path
from django.views.generic import CreateView

from my_app.views import login
from my_app import view
from my_app.models import Student

urlpatterns = [
    path('login/', login.page, name="login"),
    path('hello/', view.hello),

    path('register', CreateView.as_view(model=Student, template_name="register.html", success_url='login',fields="__all__"),
         name="register"),
]

其中register.html如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>
        Login
    </title>
</head>
<body>
	<div>Register</div>
    <div>
        <form method="post">
            {% csrf_token %}
            {{form.as_p}}
            <p><input type="submit" value="Register"/></p>
            </form>
    </div>
</body>
</html>

Student模型见Django自学笔记 4-1 模型(Models)介绍中的示例。
其他代码见本专栏之前博客(实际上本文用不到)
此时运行项目后注册页面如下
在这里插入图片描述

3 继承使用

上面举得例子是在urls.py中调用类方法as_view,指定对应的参数,去生成视图。
然而这样写不好拓展,修改起来也麻烦。
所以一般来说,更推荐在views.py中去继承CBVs,从而设置编写自己需要的视图类
再在urls.py中不传参调用as_view方法

比如上面的

CreateView.as_view(model=Student, template_name="register.html", success_url='login',fields="__all__"),
         name="register")

推荐改为在views.py去编写一个新的类CreateStudentView,
其中每个属性的意思我们在本文最后面解释

class CreateStudentView(CreateView):
    model = Student
    fields="__all__"
    template_name = "user/register.html"
    success_url = "login"

然后urls.py中的register的path就可以改为

path('register', CreateStudentView.as_view(), name="register"),

4 常用介绍

Django 实现了很多种CBVs。
他们都使用类方法as_view来获得视图函数,只不过参数可能会不同。

对于初学者,首先常用到的是一些通用的编辑视图Generic editing views
这些视图都在django.views.generic.edit中,有以下几种

  • FormView
  • CreateView
  • UpdateView
  • DeleteView

一般来讲,对于编辑视图,都有以下属性

  • model: 该视图所对应的模型
  • fields: 哪些字段可展示编辑
  • form_class:使用哪种表单来展示这个模型
  • template_name:渲染该视图使用的模板
  • success_url:指定编辑成功后跳转的页面

补充1:fields和form_class这两个参数互斥,必须且只能设置其中一个。
补充2:DeleteView无fields、form_class属性

Django还有些其他的视图,实际开发中,也可能常需要用到,具体可查阅官方文档:
class-based-views

EtherCAT同步模式实战:如何用TwinCAT配置DC-Synchronous模式(附时序图详解) 本文详细解析了如何在TwinCAT环境中配置EtherCAT的DC-Synchronous同步模式,实现纳秒级同步精度。通过硬件准备、参数配置和高级调优步骤,帮助工程师解决工业自动化中的同步挑战,提升运动控制性能。 阅读详情

相关推荐

Aurix TC3XX Cache memory分析

Aurix Cache memory 分析

qwe0405080615的博客 4348

django class-based-views

Base views下面三个class为创建Django视图提供了很多的功能。你可以把那些可以自己起作用或者从别处继承的视图当做父视图(parent views)。他们可能无法提供你的项目所需的所有功能,为了解决这种情况django给你提供了Mixins(混合类型)和Generic class-based views(基于类的泛型视图)。Viewclass django.views.generic...

kof1290的博客 596

Embarcadero Dev-C++ 6.3安装教程【保姆级】

Embarcadero Dev-C++ 6.3安装教程,保姆级教程~

Thebest_jack的博客 1万+

Django视图学习——基于类的视图

1、使用基于类的视图 2、设置视图类属性 3、扩展视图类 1、使用基于类的视图 典型的基于类的视图通常有HTTP请求处理方法实现,其基本结构如下 from django.http import HttpResponse from django.views import view class MyViewName(View): # 继承View类 # 类的属性定义 ... def get(self, request): # HTTP GET 请求处理方法

weixin_45890771的博客 825

Windows环境下DataEase一站式安装指南(含WSL2+Docker配置)

本文详细介绍了在Windows环境下通过WSL2和Docker快速部署DataEase的完整教程。从WSL2配置、Docker环境搭建到DataEase离线安装,逐步指导用户完成一站式部署,特别适合需要快速搭建数据分析平台的开发者。教程包含常见问题解决方案和性能优化技巧,帮助用户高效使用这款国产开源数据可视化工具。

weixin_42526166的博客 396

PLSQL Developer14连接Oracle详细过程

下载地址:Instant Client for Microsoft Windows (x64) 64-bit | Oracle 中国解压客户端工具到一个目录(解压文件到当前目录,自动合并成一个目录)​ 电脑(右键)→属性→高级系统设置→环境变量→系统环境变量→新建变量名:NLS_LANG 变量值: AMERICAN_AMERICA.ZHS16GBK​ 变量名:TNS_ADMIN 变量值:C:\xiaxinyu\software\Oracle\instantclient_19_10​ 在Oracle客户端(C

summer_fish的专栏 3983

【django】类视图

以函数的⽅式定义的视图称为函数视图,函数视图便于理解。但是遇到⼀个视图对应的路径提供了多种不同HTTP请求⽅式的⽀持时,便需要在⼀个函数中编写不同的业务逻辑,代码可读性与复⽤性都不佳。 一、类视图使⽤ 在Django中也可以使⽤类来定义⼀个视图,称为类视图。 使⽤类视图可以将视图对应的不同请求⽅式以类中的不同⽅法来区别定义。如下所示 主路由: urlpatterns = [ path('admin/', admin.site.urls), path('film/',include('film

python全栈 1171

Unity2D像素刀光实现:粒子方向控制与像素级渲染规范

像素风游戏中的刀光特效并非普通粒子动画,而是需严格遵循像素艺术原理的视觉暂留模拟。其核心在于将‘瞬时切割感’转化为程序可执行的渲染逻辑:通过禁用纹理滤波保障1:1像素锐度,绑定刀锋向量控制粒子运动方向,限定≤0.15秒生命周期匹配人眼暂留阈值,并采用Stretched Billboard实现动态拉伸拖影。该方案兼顾美术语义(如直劈、横扫、突刺)与工程约束(Sorting Layer分层、对象池复用、单粒子GPU优化),广泛适用于Unity2D平台的动作反馈系统,尤其适配《空洞骑士》《死亡细胞》类高节奏像素R

weixin_32390647的博客 283

JeecgBoot代码生成二选一:VBen JSON表单 vs 原生Antd,你的复杂业务场景该用哪个?

本文深入对比了JeecgBoot低代码平台中VBen JSON表单与原生Antd模板的优劣,帮助开发者根据复杂业务场景做出最佳选择。VBen JSON表单适合简单CRUD开发,提升效率;原生Antd则更适合需要高度定制的复杂交互场景。文章通过实际案例和决策流程图,为开发者提供清晰的代码生成器选型指南。

weixin_30321709的博客 678

CATIA文件的网页预览方案

CATIA是工业设计中广泛使用的专业软件,产出`.CATPart`或 `.CATProduct`等文件类型,当资产数量较大时,我们希望快捷预览这些文件,就有了`CATPart`文件网页预览的需求 但我们知道,网页上无法直接渲染`CATPart`这种复杂的文件, CATIA生成的文件(如 `CATPart` 和 `CATProduct`)不仅包含三维几何信息(例如点、线和曲面),还涵盖了丰富的元数据与专业设计特征。 那有没有办法,能实现CATIA文件在网页上的便捷预览?

weixin_44211633的博客 1449

基于扣子3.0复刻MIT“AI股神团队版”:实时股票数据API接入与策略选股复盘系统

基于扣子3.0的AI量化投资系统摘要 本文提出了一种基于扣子(Coze)3.0平台的AI量化投资解决方案,整合实时股票数据与策略选股功能。系统采用三层架构: 数据层:通过AKShare等开源工具获取A股实时行情和历史K线数据,支持批量数据抓取和清洗 策略层:内置多因子选股模型和技术指标分析模块,实现自动化标的筛选 应用层:利用扣子3.0的插件和工作流功能,构建从数据采集到投资建议的完整流程 系统特点包括:完全开源的数据接入方案、Python实现的策略计算模块、以及扣子平台提供的可视化编排能力~~~~~~~~

huanghm88的专栏 267

Django 基于类的视图

Django 的 URL 解析器期望发送请求和相关参数来调动函数而不是类,基于类的视图有一个 as_view() 类方法,当一个请求到达的 URL 被关联模式匹配时,这个类方法返回一个函数。这个函数创建一个类的实例,调用 setup() 初始化它的属性,然后调用 dispatch() 方法。类上的方法与独立函数完全不同,因此不能应用函数装饰器到方法上——需要先将它转换为方法装饰器。本质上来说,基于类的视图允许你使用不同的类实例方法响应不同 HTTP 请求方法,而不是在单个视图函数里使用有条件分支的代码。

weixin_47631745的博客 206

手把手教你学Simulink--基于Simulink的高速公路自动驾驶场景仿真建模

特点车道保持:自动调整车辆方向以保持在车道中央。自适应巡航控制(ACC):根据前方车辆的速度自动调节车速。换道辅助:安全地变换车道以超过慢速行驶的车辆或准备驶离高速公路。紧急制动:检测潜在碰撞并采取措施避免事故。挑战安全性:确保所有功能在各种条件下都能可靠运行。实时性:处理大量传感器数据,并迅速做出反应。复杂性:集成多个子系统,包括感知、规划与控制。首先明确要模拟的任务内容。车辆需保持在车道内行驶。根据交通情况自动调整速度。安全地执行换道操作。在必要时实施紧急制动。

MHD0815的博客 247

django class-based views介绍与分析

class-based views是django从1.3版本引入的一种新的特性,就是使用类的形式来描述view。class-based views对django带来的不只是编程方法的改变,而是程序设计哲学的改变。Django在最开始的设计的时候利用函数的方式来实现view,这种方式也是利用了python的动态语言特性,可以说是python’s 的编程方式。现在引入了class-based view

wangyish201201的专栏 2756

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Django class based views之TemplateDoesNotExist错误解决

先把views.py    url.py    html  写出来    ,有利于更好的理解Django  class based viewsviews.pyfrom django.shortcuts import render,render_to_responsefrom django.views.generic.base import TemplateViewfrom django.http ...

weixin_39836447的博客 496

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

介绍——基于类的视图(class-based view)

刚开始的时候,django只有基于函数的视图(Function-based views)。为了解决开发视图中繁杂的重复代码,基于函数的通用视图( Class-based generic views)出现了,但是不久它的弊端就显示出来:无法扩展、无法定制。基于函数的通用视图的不灵活导致它在现实世界中的应用受限。基于类的通用视图也是出于同样的目的被开发出来,它提供一个工具箱并支持多重继承,随着它的

fighter_yy的专栏 1021

Django自学笔记 7-3 拓展CBVs(Class-based views)

————总目录——前言——框架版本———— ======================= 大爽歌作,made by big shuang ======================= 二、拓展CBVs(Class-based views) 一般而言,直接使用原生的Class-based views,能展现的样式和内容是固定的。 为了根据实际情况去定制View,我们需要继承django自带的View并修改。 在修改之前,我们需要先了解下CBVs。 1 Class-based views常用属性和常用方.

大爽老师的博客 420

【Django】Django Class-Based Views (CBV) 与 DRF APIView 的区别解析

特性请求分发通过dispatch分发到getpost等方法继承自View,同时增加了请求对象的初始化请求处理只负责 HTTP 方法的处理增加了认证、权限、限流机制适用场景适用于通用的 Web 开发适用于 API 开发,安全机制健全。

linjiuxiansheng的博客 1730

基于 Django1.10 文档的深入学习(32)—— Introduction to class-based views

Introduction to class-based views基于类的视图介绍基于类的视图提供了将视图实现为Python对象而不是函数的替代方法。 与基于功能的视图相比,它们不会替代基于功能的视图,但具有一定的差异和优势:与特定HTTP方法(GET,POST等)相关的代码的组织可以通过单独的方法而不是条件分支来解决。 可以使用面向对象的技术,如mixins(多重继承)来将代码重新定义为可重用的

HeatDeath的博客 702

基于 Django1.10 文档的深入学习(30)——Class-based views

Class-based views基于类的视图视图是可调用的,它接受请求并返回响应。 这不仅仅是一个功能,而Django提供了一些可以用作视图的类的例子。 这些允许您通过利用继承和混合来构建视图和重用代码。 还有一些简单的任务的一般观点,我们稍后会介绍,但是您可能需要设计自己的可重用视图结构,以适合您的用例。 有关完整的详细信息,请参阅基于类的视图参考文档。 基于类视图的介绍 内置基于类的通用视图

HeatDeath的博客 677

用基于类的通用视图处理表单(Class-based generic views)

from:http://www.cnblogs.com/huafeng/p/3273421.html 处理表单通常包含3步: 初始化GET(空白的后者预填充的表单) POST非法数据(通常重新显示带有错误信息的表单) POST合法数据(提交数据并重定向)   为了将你从这些烦人的重复步骤中解救出来,Django为表单提供了一类

fighter_yy的专栏 862

Django内置的通用类视图CBV及示例

Class-based views是Django为解决建站过程中的常见的呈现模式而建立的。具有如下几个原则: 代码越少越好 永远不要重复代码 View应当只包含呈现逻辑, 不应包括业务逻辑 保持view逻辑清晰简单 不要将CBVs用作403, 404, 500的错误处理程序 保持mixin简单明了 django自带的view如下表所示: 类名 功能 例子 View ...

菲宇运维 1187

Django之 Views组件

本节内容 路由系统 models模型 admin views视图 template模板 我们已经学过了基本的view写法 单纯返回字符串 1 2 3 4 5 6 7 8 defcurrent_datetime(request): now=datetime.datetime.now...

weixin_30437847的博客 239

Django Rest Framework Class Based Views: APIView

APIView Django Rest Framework提供一个APIView类,该类继承了Django的View类。 APIView类在以下方面与常规View类不同: 1. 传递给处理程序方法的请求将是REST框架的Request实例,而不是Django的HttpRequest实例。 2. 处理程序方法可能返回REST框架的Response,而不是Django的HttpResponse。该视图将管理内容协商并在响应上设置正确的渲染器。 3. 任何APIException异常都将被捕获并介导为适当.

westvip的专栏 352

Django基于类的视图(views)

一个视图(view)是一个可调用对象(callable), 不仅仅局限于一个函数。 https://docs.djangoproject.com/en/1.8/ref/class-based-views/ == 介绍 基于类的视图(class-based views)相比较于基于函数的视图(function-based views)的不同和优点: * 处理不同HTTP方法(GET,

lzx1104的专栏 7313

Django5 实用指南(四)URL路由与视图函数

每当用户在浏览器中访问某个 URL 时,Django 会根据项目的 URL 配置文件(urls.py)来匹配对应的视图函数,并调用它来处理请求。类视图通过继承 Django 提供的基类来组织视图逻辑,使得视图的代码更加模块化、可复用,并且更符合面向对象的编程范式。视图函数是 Django 的核心部分,它是处理用户请求并返回响应的地方。在这个例子中,home() 视图函数直接返回了一个简单的文本响应,而 about() 视图函数则渲染了一个 HTML 模板并返回给用户。

网络风云的博客 1万+

Django高级指南利用Class-BasedViews构建可维护的RESTAPI

当需要超越标准CRUD的操作时,可以使用@action装饰器在视图集中添加自定义端点。例如,可以为用户模型添加一个activate动作。该装饰器允许你指定该动作映射到哪个HTTP方法(如post),是否作用于单个实例()还是整个集合,从而极大地扩展了API的功能性。

riyuexingchen_的博客 724
上一篇: Django自学笔记 3-3 模板常用语法
下一篇: Django自学笔记 7-3 拓展CBVs(Class-based views)
大爽歌
博客等级 码龄9年 422粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值