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

[Python]Django类视图

在这里插入图片描述


前言

系列文章目录
[Python]目录
视频及资料和课件
链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234
提取码:1234


文章目录

  • 前言
  • 1. 类视图简介
  • 2. 类视图的定义
    • 2.1 继承父类的导入
    • 2.2 定义类视图
    • 2.3 类视图的路由配置


1. 类视图简介

以函数的方式定义的视图称为函数视图。

但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不佳。
在这里插入图片描述

def register(request):
    """处理注册"""

    # 获取请求方法,判断是GET/POST请求
    if request.method == 'GET':
        # 处理GET请求,返回注册页面
        return render(request, 'register.html')
    else:
        # 处理POST请求,实现注册逻辑
        return HttpResponse('这里实现注册逻辑')

在Django中可以使用类来定义一个视图,称为类视图。

使用类视图可以将视图对应的不同请求方式的响应处理以类中的不同方法来区别定义。

类视图的好处:
1.代码可读性好
2.类视图相对于函数视图有更高的复用性 , 如果其他地方需要用到某个类视图的某个特定逻辑,直接继承该类视图即可

2. 类视图的定义

2.1 继承父类的导入

定义类视图需要继承自Django提供的父类View.

View的导入:

from django.views import View

2.2 定义类视图

在类视图中,对于不同的请求方式,定义不同的方法进行处理,类视图的方法直接采用http的请求方法名字作为函数名,如:get、post、delete…

类视图的方法的第一个参数为self,第二个参数必须为请求实例对象request,同时类视图的方法必须有返回值,返回值为HttpResponse对象及其子类对象。

from django.views import View


# Create your views here.
class LoginView(View):
    def get(self, request):
        return HttpResponse('get')

    def post(self, request):
        return HttpResponse('post')

2.3 类视图的路由配置

配置路由时,使用类视图的as_view()方法来添加。其实类视图.as_view()就是一个视图函数名。

类视图.as_view()会返回请求方法对应的处理函数。
as_view()执行流程:
在这里插入图片描述

path('class_login/', views.LoginView.as_view())

在这里插入图片描述
在这里插入图片描述

相关文章:

  • 重识Nginx - 12 SSL/TLS 浅析
  • 神经网络做多元线性回归,神经网络是线性模型吗
  • 如何查看Debian/Ubuntu和RHEL/AlmaLinux/Rocky软件包的更新日志
  • Java—多线程
  • 【第九篇】商城系统-商城首页功能
  • 【SpringBoot+MyBatisPlus】系统全局异常处理器的使用以及添加员工功能的实现
  • FreeRTOS大杂烩
  • 都这麽大了还不快了解防病毒网关?
  • HTML 笔记(八):SVG
  • 15.5 - 边界值法
  • 图解MySQL 记录
  • Effective C++学习笔记——确定对象被使用前已先被初始化
  • 一文弄懂 HashMap 中的位运算
  • 【易购管理系统】路由界面基础搭建
  • Linux系统常规异常报错解决汇总:
  • 78. Subsets
  • Cumulo 的 ClojureScript 模块已经成型
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • extjs4学习之配置
  • mysql innodb 索引使用指南
  • tab.js分享及浏览器兼容性问题汇总
  • webpack入门学习手记(二)
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 观察者模式实现非直接耦合
  • 诡异!React stopPropagation失灵
  • 设计模式 开闭原则
  • 为什么要用IPython/Jupyter?
  • 用Canvas画一棵二叉树
  • 用jquery写贪吃蛇
  • 自定义函数
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • #android不同版本废弃api,新api。
  • #pragma预处理命令
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (pojstep1.3.1)1017(构造法模拟)
  • (二)PySpark3:SparkSQL编程
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (转)大型网站架构演变和知识体系
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • ***检测工具之RKHunter AIDE
  • *1 计算机基础和操作系统基础及几大协议
  • .gitattributes 文件
  • .gitignore文件—git忽略文件
  • .net CHARTING图表控件下载地址
  • .NET gRPC 和RESTful简单对比
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 读取 JSON格式的数据
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @RequestBody的使用
  • @RestControllerAdvice异常统一处理类失效原因
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [AutoSar NVM] 存储架构
  • [BZOJ] 3262: 陌上花开
  • [C#基础知识系列]专题十七:深入理解动态类型