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.model_class()
- ContentType管理器(manager)提供的接口
- ContentType.objects.get_for_id()
- 通过id寻找ContentType类型,这个跟传统的get方法的区别就是它跟get_for_model共享一个缓存,因此更为推荐。
- ContentType.objects.get_for_model()
- 通过model或者model的实例来寻找ContentType类型
- ContentType.objects.get_for_id()
--------------------- 数据接口 -- 作业 -- 表结构 -- 课程类别 -- 课程表 -- 课程详细表 -- 推荐课程!!! -- 关联课程表 -- 价格策略ContentType -- 课程章节 -- 课程详细关联 -- 课时表 -- 跟章节关联 -- 常见问题表 ContentType -- 讲师表 -- 跟课程详细关联
https://juejin.im/entry/5b4eeda2e51d4519700f4c04