cbv源码

news2024/11/22 16:20:58

image-20240301084658488

cbv源码

【1】什么是查找顺序

对象属性的查找顺序:

  • 首先在对象自身的命名空间(属性字典)中查找属性。
  • 如果在对象自身的命名空间中没有找到,则会向上查找该对象的类(class)的命名空间,直到找到对应的属性或达到类的顶层(通常是 object 类)。

方法的查找顺序:

  • 首先在对象自身的类中查找方法,并调用该方法。
  • 如果在对象自身的类中没有找到方法,则会按照对象的类继承关系(即 MRO,Method Resolution Order)来查找方法,确保子类的方法优先于父类的方法被调用。

【2】如何看cbv源码

​ 需要看源码。 在看python源码的时候 一定要时刻提醒自己面向对象属性方法查找顺序

  • 先从对象自己找
  • 再去产生对象的类里面找
  • 之后再去父类找

总结: 看源码只要看到了self点一个东西 一定要问你自己当前这个self到底是谁

cbv的源码 : 突破口在urls.py

from django.contrib import admin
from django.urls import path,re_path
from app01 import views

urlpatterns = [
    # CBV源码
    re_path('r^login/',views.MyLogin.as_view()),
]
# re_path('r^login/',views.view),  这里CBV跟FBV 一模一样
# '''这里可以看出CBV跟FBV在路由匹配上本质是一样的 都是路由 对应 函数内存地址'''

# 函数名/方法名  加括号优先级最高
# 这里我们可以假设一下
	as_view()
    	要么是被@staticmethod修饰的静态方法
        要么是被@classmethod修饰的类的方法  ✓
        
	@classonlymethod
    def as_view(cls, **initkwargs):
        """Main entry point for a request-response process."""
        for key in initkwargs:
            pass

# cls 就是我们自己写的类  MyCBV
def view(request, *args, **kwargs):
    # cls 就是我们自己写的类
    # self = MyLogin(**initkwargs)  产生一个我们自己写的类的对象
    self = cls(**initkwargs)
    self.setup(request, *args, **kwargs)
'''
		需要看源码。 在看python源码的时候  一定要时刻提醒自己面向对象属性方法查找顺序

		- 先从对象自己找
		- 再去产生对象的类里面找
		- 之后再去父类找

总结: 看源码只要看到了self点一个东西  一定要问你自己当前这个self到底是谁
'''
# CBV的精华
def dispatch(self, request, *args, **kwargs):
    # Try to dispatch to the right method; if a method doesn't exist,
    # defer to the error handler. Also defer to the error handler if the
    # request method isn't on the approved list.
    
    # 获取的当前请求的小写格式  如何对比当前请求方式是否合法
    # get请求为例子
    # post请求
    if request.method.lower() in self.http_method_names:
        handler = getattr(
            self, request.method.lower(), self.http_method_not_allowed
        )
        '''
        反射:通过字符串来操作对象的数学或者方法
        handler = getattr(自己写的类产生的对象,'get',当找不到get数学或者方法的时候机会用到第三个参数)
        handler = 我们自己写的类里面的get方法
        '''
    else:
        handler = self.http_method_not_allowed
    return handler(request, *args, **kwargs)

'''自动调用get方法'''

1

image-20240229225033841

2

image-20240229225449634

3

image-20240229230424144

4

image-20240229230949408

K-1713014960992)]

3

[外链图片转存中…(img-vlhfgnDB-1713014960992)]

4

[外链图片转存中…(img-fDJQkEjk-1713014960993)]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql索引与优化问题

作为一个java程序员,mysql数据库面试应该是比较多的了;而关于数据库的面试,最多的就是性能问题,而以性能为起点,延伸出很多具体的问题。 我们使用第一性原理的方法来分析,为什么面试中一定会问数据库的索引…

vox2vec论文速读

vox2vec: A Framework for Self-supervised Contrastive Learning of Voxel-Level Representations in Medical Images 摘要 本文介绍了 vox2vec——一种体素级表示的自监督学习 (SSL) 对比方法 vox2vec 表示由特征金字塔网络 (FPN&#xf…

每日OJ题_01背包③_力扣494. 目标和(dp+滚动数组优化)

目录 力扣494. 目标和 问题解析 解析代码 滚动数组优化代码 力扣494. 目标和 494. 目标和 难度 中等 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : …

LeetCode题练习与总结:最小路径和--64

一、题目描述 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 1: 输入:grid [[1,3,1],[1,5,1],[4,2,1]] 输出…

Zotero插件ZotCard中AI-NNDL文献笔记卡分享及卡片使用方法

一、卡片社区分享 github:ZotCard插件AI-NNDL论文卡片模板 Issue #67 018/zotcard (github.com) 二、卡片效果预览 ZotCard插件AI-NNDL论文卡片模板是关于人工智能神经网络与深度学习论文的笔记卡片,效果预览如下图: 三、卡片代码 经过了…

[CSS]使用方式+样式属性

层叠样式表(Cascading Style Sheets),与HTML一样,也是一种标记语言,其作用就是给HTML页面标签添加各种样式,定义网页的显示效果,将网页内容和显示样式进行分离,提高了显示功能。简单…

(Oracle)SQL优化案例:隐式转换优化

项目场景 项目现场的某个kettle模型执行非常缓慢,原因在于某个SQL执行效率非常的低。甲方得知此事要求公司赶紧优化,负责该模块的同事对SQL优化并不熟悉。所以作为一个立志成为优秀DBA的ETL工程师,我自告奋勇:不是DBA,…

4.2 面向对象程序设计-类的继承实验

本文仅供学习交流,严禁用于商业用途,如本文涉及侵权请及时联系将于24小时内删除 目录 1.实验内容 2.实验原理 2.1类的继承 2.2 继承的优点和缺点 2.3 继承的方式 3.实验代码 1.实验内容 创建一个父类CalcTime,在父类中依次定义用于保存…

Java基础(二)-- 面向对象

文章目录 第二章、面向对象一、类和对象1、基本概念1)什么是对象2)什么是面向对象3)什么是类4)什么是对象的属性和方法5)类和对象的关系 2、单一职责原则3、对象实例化1)Java内存管理之堆和栈 4、构造方法5…

js可视化爬取数据生成当前热点词汇图

功能 可以爬取到很多数据,并且生成当前的热点词汇图,词越大越热门(词云图) 这里以b站某个评论区的数据为例,爬取63448条数据生成这样的图片 让我们能够更加直观的看到当前的热点 git地址 可以直接使用,中文…

C++进阶03 模板与群体数据

听课笔记简单整理,供小伙伴们参考~🥝🥝 第1版:听课的记录代码~🧩🧩 编辑:梅头脑🌸 审核:文心一言 目录 🐳课程来源 🐋模板 🐋8.…

【刷题篇】回溯算法(三)

文章目录 1、全排列2、子集3、找出所有子集的异或总和再求和4、全排列 II5、电话号码的字母组合6、括号生成 1、全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 class Solution { public:vector<vector<i…

太阳光光照试验耐久性老化试验使用太阳光模拟器系统

上海科迎法电气科技有限公司生产的太阳光模拟器系统主要应用于太阳能研究、材料研究、光伏组件测试、空间环境模拟器、植物生长研究、光热模拟等领域&#xff0c;主要表现特征为&#xff1a; 1. 太阳能研究&#xff1a;可用于模拟不同光照条件下太阳能电池的性能测试和研究&am…

Element ui 动态展示表格列,动态格式化表格列的值

需求 后台配置前端展示的表格列&#xff0c;遇到比如 文件大小这样的值&#xff0c;如果后台存的是纯数字&#xff0c;需要进行格式化展示&#xff0c;并且能控制显示的小数位数&#xff0c;再比如&#xff0c;部分列值需要加单位等信息&#xff0c;此外还有状态类&#xff0…

JavaEE初阶Day 7:多线程(5)

目录 Day 7&#xff1a;多线程&#xff08;5&#xff09;1. 死锁2. 死锁场景3. 场景二&#xff1a;两个线程&#xff0c;两把锁4. 场景三&#xff1a;N个线程&#xff0c;M把锁5. 避免死锁问题6. 内存可见性问题 Day 7&#xff1a;多线程&#xff08;5&#xff09; 回顾synchr…

每日一题---OJ题: 环形链表 II

片头 嗨! 小伙伴们,大家好! 我们又见面啦,在上一篇中,我们学习了环形链表I, 今天我们继续来打boss,准备好了吗? Ready Go ! ! ! emmm,同样都是环形链表,有什么不一样的地方呢? 肯定有, 要不然也不会一个标记为"简单" ,一个标记为"中等"了,哈哈哈哈哈 …

2024年MathorCup数学建模A题移动通信网络中PCI规划问题解题文档与程序

2024年第十四届MathorCup高校数学建模挑战赛 A题 移动通信网络中PCI规划问题 原题再现&#xff1a; 物理小区识别码(PCI)规划是移动通信网络中下行链路层上&#xff0c;对各覆盖小区编号进行合理配置&#xff0c;以避免 PCI 冲突、PCI 混淆以及 PCI 模3 千扰等现象。PCI 规划…

基于SpringBoot+Vue的毕业生学历证明系统(源码+文档+部署+讲解)

一.系统概述 快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省时间和提高工作效率&#xff0c;越来越多的人选择利用互联网进行线上打理各种事务&#xff0c;然后线上管理系统也就相继涌现。与此同时&#xff0c;人们开始接受方…

git submodule---同步最新的内容

0 Preface/Foreword 1 同步最新submodule内容到repo中 项目的repo包含了一个子模块&#xff0c;在开发过程中&#xff0c;经常需要同步子模块最新的commit到repo中。该如何操作呢&#xff1f; 本地在克隆时候&#xff0c;已经同步把子模块中的内容克隆下来了&#xff0c;但是…

Rust跨平台编译

❝ 如果你感觉自己被困住了&#xff0c;焦虑并充满消极情绪&#xff0c;生命出现了停滞&#xff0c;那么治疗方法很简单&#xff1a;「做点什么」。 ❞ 大家好&#xff0c;我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder 前言 之前我们不是写了一篇R…