admin- 源码解析(流程)
首先我们需要了解一个知识点:---单例模式---
单例模式
单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。
比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息。如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪费内存资源,尤其是在配置文件内容很多的情况下。事实上,类似 AppConfig 这样的类,我们希望在程序运行期间只存在一个实例对象。
在 Python 中,我们可以用多种方法来实现单例模式:
- 使用模块
- 使用
__new__
- 使用装饰器(decorator)
- 使用元类(metaclass)
使用__new__
为了使类只能出现一个实例,我们可以使用 __new__
来控制实例的创建过程,代码如下:
class Singleton(object):_instance = Nonedef __new__(cls, *args, **kw):if not cls._instance:cls._instance = super(Singleton, cls).__new__(cls, *args, **kw) return cls._instance class MyClass(Singleton): a = 1
在上面的代码中,我们将类的实例和一个类变量 _instance
关联起来,如果 cls._instance
为 None 则创建实例,否则直接返回 cls._instance
。
执行情况如下:
one = MyClass() two = MyClass() print(one == two) # True print(one is two) # True print(id(one), id(two)) # (34897312, 34897312)
(2)使用模块
其实,Python 的模块就是天然的单例模式,因为模块在第一次导入时,会生成 .pyc
文件,当第二次导入时,就会直接加载 .pyc
文件,而不会再次执行模块代码。因此,我们只需把相关的函数和数据定义在一个模块中,就可以获得一个单例对象了。如果我们真的想要一个单例类,可以考虑这样做:
# mysingleton.py class My_Singleton(object):def foo(self):passmy_singleton = My_Singleton()
将上面的代码保存在文件 mysingleton.py
中,然后这样使用:
from mysingleton import my_singletonmy_singleton.foo()
admin执行流程
首先可以确定的是:路由关系一定对应一个视图函数
a、当点击运行的时候,会先找到每一个app中的admin.py文件,并执行
b、执行urls.py
如果一个项目调用django的Admin,那么项目的urls.py中一定会有这样一段代码
urlpatterns = [url(r'^admin/', admin.site.urls),
admin.site
admin.site是什么?
admin.site,urls 返回的是一个元组,里面的第一个元素是一个列表
(1)、循环循环加载执行所有已经注册的app中的admin.py文件
转载于:https://www.cnblogs.com/jassin-du/p/8542822.html
admin- 源码解析(流程)相关推荐
- 详细讲解go web框架之gin框架源码解析记录及思路流程和理解
开篇 首先gin 框架是在 官方提供的net/http标准包进行的相应封装. 那么要想理解gin框架, 就要先懂一些 net/http标准包 的相关知识. 可以参考中文的 文档: https://st ...
- 渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(上)
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/11/es-code02/ 前提 上篇文章写了 ElasticSearch 源码解析 -- ...
- Retrofit2源码解析——网络调用流程(下)
Retrofit2源码解析系列 Retrofit2源码解析(一) Retrofit2源码解析--网络调用流程(上) 本文基于Retrofit2的2.4.0版本 implementation 'com. ...
- .net core 源码解析-mvc route的注册,激活,调用流程(三)
.net core mvc route的注册,激活,调用流程 mvc的入口是route,当前请求的url匹配到合适的route之后,mvc根据route所指定的controller和action激活c ...
- statement执行insert into语句_【图文并茂】源码解析MyBatis ShardingJdbc SQL语句执行流程详解...
源码分析Mybatis系列目录: 1.源码分析Mybatis MapperProxy初始化[图文并茂] 2.源码分析Mybatis MappedStatement的创建流程 3.[图文并茂]Mybat ...
- android 输入法如何启动流程_android输入法02:openwnn源码解析01—输入流程
android 输入法 02:openwnn 源码解析 01-输入流程 之后要开始 android 日文输入法的测试,因此现在开始研究 android 输入法.之前两 篇文章已经对 android 自 ...
- Netty 源码解析系列-服务端启动流程解析
netty源码解析系列 Netty 源码解析系列-服务端启动流程解析 Netty 源码解析系列-客户端连接接入及读I/O解析 五分钟就能看懂pipeline模型 -Netty 源码解析 1.服务端启动 ...
- Zabbix 源码解析之监控项数据采集流程
一.概述 监控项数据采集是一个监控工具最基本的功能,监控数据采集的准确.实时.有效是Zabbix其它监控功能正常运转的前提.因此,Zabbix运维人员有必要了解监控项数据采集流程,并有针对性的设计巡检 ...
- Spring源码解析(五)-Bean的实例化流程(上)
在前面已经完成了对需要实例化bean的收集并封装成BeanDefinition,并且将BeanPostProcess等组件进行了提前实例化.接下来就到了容器启动的最后一步,也是最复杂的一步-实例化be ...
- 源码解析-偏向锁撤销流程解读
一.单个偏向锁的撤销 源码链接:http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/9ce27f0a4683/src/share/vm/runtim ...
最新文章
- excel2010设置列宽为像素_excel图表制作技巧:条件格式制作像素图表
- C语言DP备忘计算指数N的斐波那契级数的算法(附完整源码)
- koa --- nunjucks在Koa中的使用、中间件的配置
- laravel graphql php,结合 Laravel 初步学习 GraphQL
- 施一公:中国还缺乏真正的世界顶尖大学,研究生该听听这些建议
- Android入门(六) | Activity 的启动模式 及 生产环境中关于 Activity 的小技巧
- Android启示录——开始Android旅途
- C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper(三:附源码)...
- Pulseaudio入坑
- PHP实现站点pv,uv统计(一)
- IIS 部署.NetCore
- 计算机网络安全及故障谢辞,计算机网络安全初探.pdf
- 中国地热能产业需求预测与投资规划建议报告2022-2028年版
- Chrome和Firebox快捷键
- 设置谷歌浏览器打开链接自动跳转到新窗口而不是覆盖当前窗口
- [Memcache] 初探Memcache
- Elemrnt UI DatePicker日期选择器(格式、限定日期),周选择器
- sha1安全码校验工具(apk)
- SpringBoot整合Elastricsearch + LogStash + Kibana太简单了!
- oracle simphony_MICROS Simphony | All-In-One Restaurant POS System | Oracle 中国
热门文章
- MSP430杂谈--delay_cycles的精准延时
- 作为现代计算机理论的基础的,作为现代计算机理论基础的冯·诺依曼原理和思想是()。...
- java去掉重复字符_Java实现去掉字符串重复字母的方法示例
- decose oracle_ORACLE会话连接进程三者总结
- 软件开发工程师证书有用吗_监理工程师证书有用吗?有没有含金量?
- android jni framework,Android Framework层的JNI机制(二)
- 【Docker系列教程之三】Docker容器是如何工作的
- 【运维程序】简单的命令控制器(支持定时命令执行、重复定时任务命令和进程管理,开发这个小程序主要是为了方便管理服务进程)【个人github项目】...
- node模块加载机制。
- AIO系列文档(1)----图解ByteBuffer