## 1. 先从`session`中间件中进入 - `django.contrib.sessions.middleware.SessionMiddleware` class SessionMiddleware(MiddlewareMixin): def __init__(self, get_response=None): self.get_response = get_response engine = import_module(settings.SESSION_ENGINE) self.SessionStore = engine.SessionStore def process_request(self, request): session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME) request.session = self.SessionStore(session_key)
Python中实现二分查找的两种方法
二分查找:搜索一般是从列表的中间开始查找,如果中间刚好是目标值,则搜索结束,返回结果;如果目标值大于中间值,则按这个中间值分割列表,在大于中间值的这部分列表里继续查找;如果目标值小于中间值,则按这个中间值分割列表,在小于中间值的这部分列表里继续查找。
K8S丨部署丨二进制部署Kubernetes
这些年来,谷歌开发出了一个叫`Borg`的内部系统(后来还有一个新系统叫`omega`),应用开发者和系统管理员管理那些数以千计的应用程序和服务都受益于它的帮助。除了简化开发和管理,它也帮助他们获得了更高的基础设施利用率,在你的组织如此庞大时,这很重要。当你运行成千上万台机器时,哪怕一丁点的利用率提升也意味着节约了数百万美元,所以,开发这个系统的动机是显而易见的。在保守`Borg`和`Omega`秘密数十年之后,2014年,谷歌开放了`Kubernetes`,一个基于`Borg`、 `Omega`及其他谷歌内部系统实践的开源系统。
Python基础丨直接赋值、浅拷贝和深拷贝解析
## 1 概念 - **直接赋值**:其实就是对象的引用(别名);- **浅拷贝**(copy):拷贝父对象,不会拷贝对象的内部的子对象;- **深拷贝**(deepcopy):copy模块的deepcopy方法,完全拷贝了父对象及其子对象;## 2 直接赋值 b = a:赋值引用,a 和 b 都指向同一个对象;
Django丨模版层 - 7. 验证器
在Django的模型字段参数中,有一个参数叫做`validators`,这个参数是用来指定当前字段需要使用的`验证器`,也就是对字段数据的合法性进行验证,比如大小、类型等。Django的验证器可以分为**模型相关**的验证器和**表单相关**的验证器,它们基本类似,但在使用上有区别。本文讨论的是**模型相关**的验证器。## 1. 自定义验证器一个验证器其实就是一个可调用的对象(函数或类),接收一个初始输入值作为参数,对这个值进行一系列逻辑判断,如果不满足某些规则或者条件,则表示验证不通过,抛出一个`ValidationError`异常。如果满足条件则通过验证,不返回任何内容(也就是默认的`return None`),可以继续下一步。
Django丨模版层 - 6. Meta-模型的元数据
1、介绍 模型的元数据,指的是'除了字段外的所有内容'(例如,排列方式、数据库表名,人类可读的单数 或 复数名等)。所有的这些都是非必须的,甚至元数据本身对模型也是非必须的。但是在实际使用中居右重要的作用。 2、使用 想在模型中增加元数据,方法很简单,在模型类中添加一个子类,名字固定是Meta,然后在这个Meta类下面增加各种元数据选项(设置项),例如:from django.db import models
Django丨模版层 - 5. 模型的继承
很多时候,我们都不是从‘一穷二白’开始编写模型的,有时候可以从第三方库中继承,有时候可以从以前的代码中继承,甚至现写一个模型用于被其它模型继承。这样做的好处,我就不赘述了,每个学习Django的人都非常清楚。 类同于Python的类继承,Django也有完善的继承机制。Django中所有的模型都必须继承`django.db.models.Model`模型,不管是直接继承也好,还是间接继承也罢。你唯一需要决定的是,父模型是否是一个独立自主的,同样在数据库中创建数据表的模型,还是一个只用来保存子模型共有内容,并不实际创建数据表的抽象模型。
Django丨模版层 - 4. 字段参数
> 所有的模型字段都可以接收一定数量的参数,比如: `CharField`至少需要一个`max_length`参数。 下面的这些参数是所有字段都可以使用的,并且是可选的。## 1. `null` 该值为`True`时,Django在数据库用`NULL`保存空值。默认值为`False`。 对于保存字符串类型数据的字段,请尽量避免将此参数设为`True`,那样会导致两种`没有数据`的情况,一种是`NULL`,另一种是空字符串`''`。Django 的惯例是使用空字符串而不是`NULL`。## 2. `blank` 该值为`True`时,字段可以为空。默认值为`False`。
Django丨模版层 - 3. 关系类型字段
# 3. 关系类型字段 除了普通类型字段,Django还定义了一组关系类型字段,用来表示模型与模型之间的关系。 ## 1. 一对多(`ForeignKey`) **一对多**的关系,通常被称为**外键**。外键字段类的定义如下: class ForeignKey(to, on_delete, **options) - 外键需要两个位置参数
Django丨模版层 - 2. 字段详解
## 1. 字段详解 - <1> `AutoField` - **字段解释**:一个自动增加的整数类型字段;你通常不需要直接使用这个字段 - **用途**:自定义一个主键:`my_id = models.AutoField(primary_key=True)`;如果你不指定主键的话,系统会自动添加一个主键字段到你的`model`;### <2> `BigAutoField` class BigAutoField(**options) - **字段解释**:64位整数类型自增字段,非常类似于`AutoField`,数字范围更大,从`1`到`9223372036854775807`