django从入门到实战(三)——CBV视图介绍

在 Django 中,不同类型的视图(如数据显示视图、数据操作视图和日期筛选视图)都有各自的方法和参数。以下是对这些视图及其方法的详细介绍。

1. 数据显示视图

1.1 重定向视图

方法

  • redirect(): 用于重定向到另一个 URL。

使用示例

from django.shortcuts import redirectdef my_view(request):# 处理某些逻辑return redirect('home')  # 重定向到首页

参数

  • to: 可以是 URL 字符串、URL 名称或一个可调用对象。
  • permanent: 布尔值,指示是否进行永久重定向(默认值为 False)。
1.2 基础视图

方法

  • HttpResponse(): 返回简单的文本或 HTML 内容。

使用示例

from django.http import HttpResponsedef basic_view(request):return HttpResponse("这是一个基础视图")

参数

  • content: 响应内容(字符串)。
  • status: HTTP 状态码(默认值为 200)。
  • content_type: 响应内容类型(如 text/html)。
1.3 列表视图

方法

  • get_queryset(): 返回要显示的对象列表。
  • get_context_data(): 返回上下文数据。

使用示例

from django.views.generic import ListView
from .models import Postclass PostListView(ListView):model = Posttemplate_name = 'post_list.html'context_object_name = 'posts'def get_queryset(self):return Post.objects.filter(published=True)  # 只显示已发布的帖子

参数

  • model: 关联的模型类。
  • template_name: 使用的模板名称。
  • context_object_name: 上下文变量名称(默认为 object_list)。
1.4 详细视图

方法

  • get_object(): 返回要显示的对象。
  • get_context_data(): 返回上下文数据。

使用示例

from django.views.generic import DetailView
from .models import Postclass PostDetailView(DetailView):model = Posttemplate_name = 'post_detail.html'context_object_name = 'post'def get_object(self):return super().get_object()  # 获取当前帖子对象

参数

  • model: 关联的模型类。
  • template_name: 使用的模板名称。
  • context_object_name: 上下文变量名称(默认为 object)。

2. 数据操作视图

2.1 表单视图

方法

  • form_valid(): 处理有效表单提交。
  • form_invalid(): 处理无效表单提交。
  • get_form(): 获取表单实例。

使用示例

from django.views.generic.edit import FormView
from .forms import PostFormclass PostCreateView(FormView):template_name = 'post_form.html'form_class = PostFormsuccess_url = '/posts/'def form_valid(self, form):form.save()  # 保存表单数据return super().form_valid(form)

参数

  • template_name: 使用的模板名称。
  • form_class: 表单类。
  • success_url: 提交成功后重定向的 URL。
2.2 新增视图

新增视图通常与表单视图结合使用,允许用户创建新记录。使用 FormViewCreateView

示例

from django.views.generic.edit import CreateViewclass PostCreateView(CreateView):model = Posttemplate_name = 'post_form.html'form_class = PostFormsuccess_url = '/posts/'

参数

  • model: 关联的模型类。
  • template_name: 使用的模板名称。
  • form_class: 表单类。
  • success_url: 提交成功后重定向的 URL。
2.3 修改视图

修改视图用于更新现有记录,使用 UpdateView

示例

from django.views.generic.edit import UpdateViewclass PostUpdateView(UpdateView):model = Posttemplate_name = 'post_form.html'form_class = PostFormsuccess_url = '/posts/'

参数

  • model: 关联的模型类。
  • template_name: 使用的模板名称。
  • form_class: 表单类。
  • success_url: 提交成功后重定向的 URL。
2.4 删除视图

删除视图用于删除现有记录,使用 DeleteView

示例

from django.views.generic.edit import DeleteViewclass PostDeleteView(DeleteView):model = Posttemplate_name = 'post_confirm_delete.html'success_url = '/posts/'

参数

  • model: 关联的模型类。
  • template_name: 使用的模板名称。
  • success_url: 删除成功后重定向的 URL。

3. 日期筛选视图

3.1 月份视图

方法

  • get_queryset(): 返回特定月份的数据。

使用示例

from django.shortcuts import render
from .models import Postdef posts_by_month(request, year, month):posts = Post.objects.filter(created_at__year=year,created_at__month=month)return render(request, 'posts_by_month.html', {'posts': posts})

参数

  • year: 年份(整数)。
  • month: 月份(整数)。
3.2 周期视图

方法

  • get_queryset(): 返回特定时间段的数据。

使用示例

from django.shortcuts import render
from .models import Postdef posts_in_period(request, start_date, end_date):posts = Post.objects.filter(created_at__range=[start_date, end_date])return render(request, 'posts_in_period.html', {'posts': posts})

参数

  • start_date: 开始日期(字符串或日期对象)。
  • end_date: 结束日期(字符串或日期对象)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/473874.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据科学与SQL:如何计算排列熵?| 基于SQL实现

目录 0 引言 1 排列熵的计算原理 2 数据准备 3 问题分析 4 小结 0 引言 把“熵”应用在系统论中的信息管理方法称为熵方法。熵越大,说明系统越混乱,携带的信息越少;熵越小,说明系统越有序,携带的信息越多。在传感…

28.<Spring博客系统⑤(部署的整个过程(CentOS))>

引入依赖 Spring-boot-maven-plugin 用maven进行打包的时候必须用到这个插件。看看自己pom.xml中有没有这个插件 并且看看配置正确不正常。 注&#xff1a;我们这个项目打的jar包在30MB左右。 <plugin><groupId>org.springframework.boot</groupId><artif…

无人机在森林中的应用!

一、森林资源调查 无人机可以利用遥感技术快速获取所需区域高精度的空间遥感信息&#xff0c;对森林图斑进行精确区划。相较于传统手段&#xff0c;无人机调查具有低成本、高效率、高时效的特点&#xff0c;尤其在地理环境条件不好的区域&#xff0c;调查人员无法或难以到达的…

esp32c3开发板通过micropython的mqtt库连MQTT物联网消息服务器

MQTT介绍 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息协议&#xff0c;旨在设备之间进行通信&#xff0c;尤其是在网络条件较差的情况下。MQTT v3.1.1 和 MQTT v5 是该协议的两个主要版本。 MQTT v3.1.1&#xff1a; 优点&#xff…

什么是SMARC?模块电脑(核心板)规范标准简介三

1. 概念 SMARC&#xff08;Smart Mobility ARChitecture&#xff0c;智能移动架构&#xff09;是一种通用的小型计算机模块定义&#xff0c;基于ARM和X86技术的模块化计算机低功耗嵌入式架构平台&#xff0c;旨在满足低功耗、低成本和高性能的应用需求。这些模块通常使用与平板…

resnet50,clip,Faiss+Flask简易图文搜索服务

一、实现 文件夹目录结构&#xff1a; templates -----upload.html faiss_app.py 前端代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widt…

JavaWeb——JS、Vue

目录 1.JavaScript a.概述 b.引入方式 c.JS的基础语法 d.JS函数 e.JS对象 f.JS事件监听 2.Vue a.概述 b.Vue常用指令 d.生命周期 1.JavaScript a.概述 JavaScript是一门跨平台、面向对象的脚本语言。是用来控制网页行为的&#xff0c;它能使网页可交互。JavaScript和…

MySQL的编程语言

一、MySQL基础 使用系统的全局变量@@VERSION查看当前使用的MySQL的版本信息,SQL语句如下: select @@version; 将局部变量varl声明为char的类型,长度值为10,并为其赋值为“程菲” begin declare var1 char(10); set @var1="程菲"; end 通过局部变量查看d_eams数…

小程序-基于java+SpringBoot+Vue的驾校预约平台设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

阿里云引领智算集群网络架构的新一轮变革

阿里云引领智算集群网络架构的新一轮变革 云布道师 11 月 8 日~ 10 日在江苏张家港召开的 CCF ChinaNet&#xff08;即中国网络大会&#xff09;上&#xff0c;众多院士、教授和业界技术领袖齐聚一堂&#xff0c;畅谈网络未来的发展方向&#xff0c;聚焦智算集群网络的创新变…

【ASR技术】WhisperX安装使用

介绍 WhisperX 是一个开源的自动语音识别&#xff08;ASR&#xff09;项目&#xff0c;由 m-bain 开发。该项目基于 OpenAI 的 Whisper 模型&#xff0c;通过引入批量推理、强制音素对齐和语音活动检测等技术。提供快速自动语音识别&#xff08;large-v2 为 70 倍实时&#xf…

android framework ams/wms常见系统日志(main\system\events\crash,protoLog使用)

重要性 wms和ams的一些系统原生日志能够帮助我们快速定位问题 日志分类 在日常framework工作中常见的日志类别如下&#xff1a; -b , --buffer Request alternate ring buffer, ‘main’, ‘system’, ‘radio’, ‘events’, ‘crash’, ‘default’ or ‘all’. Additiona…

2024年11月16日 星期六 重新整理Go技术

今日格言 坚持每天进步一点点~ 一个人也可以是一个团队~ 学习全栈开发, 做自己喜欢的产品~~ 简介 大家好, 我是张大鹏, 今天是2024年11月16日星期六, 很高兴在这里给大家分享技术. 今天又是休息的一天, 做了很多的思考, 整理了自己掌握的技术, 比如Java, Python, Golang,…

深度解读混合专家模型(MoE):算法、演变与原理

假设一个专家团队共同解决复杂问题。每位专家都拥有独特的技能&#xff0c;团队通过高效分配任务实现了前所未有的成功。这就是混合专家&#xff08;Mixture-of-Experts&#xff0c;MoE&#xff09;模型架构背后的基本思想&#xff0c;这种方法允许机器学习系统&#xff0c;特别…

Area-Composition模型部署指南

一、介绍 本模型可以通过输入不同的提示词&#xff0c;然后根据各部分提示词进行融合生成图片。如下图&#xff1a; 此图像包含 4 个不同的区域&#xff1a;夜晚、傍晚、白天、早晨 二、部署 环境要求&#xff1a; 最低显存&#xff1a;10G 1. 部署ComfyUI 本篇的模型部署…

HTML之列表学习记录

练习题&#xff1a; 图所示为一个问卷调查网页&#xff0c;请制作出来。要求&#xff1a;大标题用h1标签&#xff1b;小题目用h3标签&#xff1b;前两个问题使用有序列表&#xff1b;最后一个问题使用无序列表。 代码&#xff1a; <!DOCTYPE html> <html> <he…

Java基础-内部类与异常处理

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 一、Java 内部类 什么是内部类&#xff1f; 使用内部类的优点 访问局部变量的限制 内部类和继承 内部…

C/C++中使用MYSQL

首先要保证下载好mysql的库和头文件&#xff0c;头文件在/usr/include/mysql/目录下&#xff0c;库在/usr/lib64/mysql/目录下&#xff1a; 一般情况下&#xff0c;在我们安装mysql的时候&#xff0c;这些都提前配置好了&#xff0c;如果没有就重装一下mysql。如果重装mysql还是…

华为ensp实验二--mux vlan的应用

一、实验内容 1.实验要求&#xff1a; 在交换机上创建三个vlan&#xff0c;vlan10、vlan20、vlan100&#xff0c;将vlan100设置为mux-vlan&#xff0c;将vlan10设置为group vlan&#xff0c;将vlan20设置为separate vlan&#xff1b;实现vlan10的设备在局域网内可以进行互通&…

Redis知识分享(三)

目录 前言 七、事务管理 7.1事务中的异常处理 八、订阅发布 8.1概述 ​8.2.Redis针对发布订阅相关指令 九、主从复制 9.1主从复制概述 9.2.主从复制的用处 9.3主从复制实现原理 ​9.3.1.psync指令 9.3.2.复制偏移量 9.3.3复制积压缓冲区&节点ID 前言 今天…