python全栈开发103_python全栈开发day103-python垃圾回收机制、mro和c3算法解析、跨域jsonp\CORS、Content-Type组件...

Python垃圾回收

-- 引用计数

-- Python为每个对象维护一个引用计数

-- 当引用计数为0的 代表这个对象为垃圾

-- 标记清除

-- 解决孤立的循环引用

-- 标记根节点和可达对象

-- 不可达视为垃圾

-- 分代回收

-- 解决标记清除的效率问题

-- 0代 1代 2代

-- 阈值 (700,10,10)

-- 当调用c的接口开辟内存和销毁内存的差值为700的时候出发0代回收

-- 0代触发10次 触发1代回收

-- 1代触发10次 触发2代回收

-- 每次回收结束 没有被回收的对象放入下一代

PythonMRO c3算法

-- 找到类的mro的继承顺序

-- 第一步 找到所有父类的mro

-- 第二步 用这些父类的mro 跟所有的父类进行归并

-- 取每个表表头 并且其他表去掉表头的部分不能含有我们要取的那个表头

-- 如果不满走就去取第二个表头

跨域

-- 浏览器的同源策略 阻止ajax请求 不阻止src请求

-- jsonp

-- 我们利用src发送请求

-- core

-- class MyCore(MiddlewareMixin):

def process_response(self, request, response):

response['Access-Control-Allow-Origin'] = "*"

if request.method == "OPTIONS":

# 复杂请求 预检

response['Access-Control-Allow-Headers'] = "Content-Type"

response['Access-Control-Allow-Methods'] = "POST, DELETE, PUT"

return response

ContentType组件

-- 应用 价格策略 常见问题 优惠券

-- 一张表跟多张表建立外键关系的

-- 用法

# 第一步 先生成ForeignKey字段 关联ContentType

content_type = models.ForeignKey(to=ContentType)

# 第二步 生成一个IntergerField 字段关联

object_id = models.PositiveIntegerField()

# 第三步 生成一个GenericForeignKey 把上面两个字段注册进去

content_object = GenericForeignKey("content_type", "object_id")

-- 创建和查询

# 通过contentType找到OldBoy中所有的信息

# content = ContentType.objects.filter(app_label="app01", model="oldboy").first()

# oldboy_model = content.model_class()

# ret = oldboy_model.objects.all()

# print(ret)

# 给Yuan局长加优惠券信息

yuan_obj = OldBoy.objects.filter(id=2).first()

Coupon.objects.create(name="苑局1000-750优惠券", content_object=yuan_obj)

# alex_obj = OldBoy.objects.filter(id=1).first()

# Coupon.objects.create(name="Alex打折优惠券", content_object=alex_obj)

# 查询优惠券id=1的关联的商品

# coupon_obj = Coupon.objects.filter(id=1).first()

# goods_obj = coupon_obj.content_object

# print(goods_obj)

# 查询苑昊的优惠券

yuan_obj = OldBoy.objects.filter(id=2).first()

coupon_list = yuan_obj.coupons.all()

print(coupon_list)

#######################################################################

ContentType实例提供的接口

ContentType.model_class()

获取当前ContentType类型所代表的模型类

ContentType.get_object_for_this_type()

使用当前ContentType类型所代表的模型类做一次get查询

ContentType管理器(manager)提供的接口

ContentType.objects.get_for_id()

通过id寻找ContentType类型,这个跟传统的get方法的区别就是它跟get_for_model共享一个缓存,因此更为推荐。

ContentType.objects.get_for_model()

通过model或者model的实例来寻找ContentType类型

---------------------

数据接口

-- 作业

-- 表结构

-- 课程类别

-- 课程表

-- 课程详细表

-- 推荐课程!!!

-- 关联课程表

-- 价格策略ContentType

-- 课程章节

-- 课程详细关联

-- 课时表

-- 跟章节关联

-- 常见问题表 ContentType

-- 讲师表

-- 跟课程详细关联

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值