AI-跨域、垃圾回收、content_type组见、接口处理

跨域

为什么有跨域?什么时候遇见的?
答:由于浏览器的同源策略 阻止ajax请求 不阻止src请求;在测试时,项目上线后不会遇见跨域。源:协议、域名、端口 什么是浏览器的同源策略?
答:是浏览器对js实施的安全限制,比如:http://www.123.com:8080/index.html
调用 http://www.123.com:8081/server.php (端口不同:8080/8081,属于跨域);http://abc.123.com/index.html
调用 http://def.123.com/server.php (子域名不同:abc/def,属于跨域)。

解决跨域?
a.jsonp
-- 缺点:不能发送post请求,我们利用src发送请求的

b.core
--做一个中间件,给响应加响应头。简单请求时比如发送一个urlencoding格式数据就是简单请求。当发送json时,就是复杂请求了,
    处理复杂请求时,给请求头加上一个Headers\Methods即可!
 -- get请求主要是给响应加响应头,
-- class MyCore(MiddlewareMixin):
def process_response(self, request, response):
response['Access-Control-Allow-Origin'] = "*"
if request.method == "OPTIONS": #比如post,put,delete等方式
# 复杂请求 预检
response['Access-Control-Allow-Headers'] = "Content-Type"
response['Access-Control-Allow-Methods'] = "POST, DELETE, PUT"
return response

垃圾回收

python的垃圾回收以引用计数为主,标记清除、分代回收为辅

引用计数:python会为每个对象维护一个引用计数,当引用的次数为0,就视为垃圾;
标记清除:为了解决孤立的循环引用问题。标记根节点和可达对象,将不可达的对象视为垃圾;
分代回收:解决标记清除效率问题。分为3代,阈值为(700,10,10),当调用c接口开辟内存和销毁内存的差值为700触发0代回收,
     0代触发10次触发1代,1代触发10次触发2代,每次回收结束,没有被回收的对象放到下一代。

content-type组件

需求-为什么要用content_type?

当商场搞活动,需要给商品加优惠券,而且要给用户优惠券,使用平时的Foreign方法繁杂,
所以有了Content-type组件来帮助我们简化之,主要思路就是设计一个content-type表,
里边内容是 : id app_name model_class ,分别为 id值、app名称、表名,优惠券表里的
字段:id name object_id content_type_id ,分别为 id、优惠券名称、用户的id、
(用户)表的id值。有了这个content_type,我们给用户添加优惠券信息时就可以使用命令
直接添加,不用一个一个的创建外键关联等。命令:

content_type 命令

    -- 应用 价格策略 常见问题 优惠券
-- 一张表跟多张表建立外键关系的
-- 用法
# 第一步 先生成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)

AI-跨域、垃圾回收、content_type组见、接口处理的更多相关文章

  1. ajax解决跨域方法(适用于自己写接口解决跨域)

    原因是这样的:最近用PHP开发了一个网站,这个网站需要提供接口,接口开发完成之后,在本地进行请求,跨域测试. jsonp处理跨域和用PHP函数来处理跨域就不说了. 现在说的使用用 header 这个来 ...

  2. vue-music 跨域获取QQ音乐歌单接口

    最近在看vue音乐APP视频学习,需要跨域获取歌单数据,视频中老师是在build/dev-server.js文件配置跨域接口的,但是新版的vue-cli是没有这个文件的,我的vue版本是"2 ...

  3. c# -- 对象销毁和垃圾回收

    有些对象需要显示地销毁代码来释放资源,比如打开的文件资源,锁,操作系统句柄和非托管对象.在.NET中,这就是所谓的对象销毁,它通过IDisposal接口来实现.不再使用的对象所占用的内存管理,必须在某 ...

  4. Http跨域时的Option请求

    写这篇文章时,我们碰到的一个场景是:要给R系统做一个扩展小应用,前端的html.js放在R系统里,后端需要做一个单独的站点N.B.com.这就导致了跨域问题,而且要命的是,后端同学没有权限向招聘的系统 ...

  5. Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!

    本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...

  6. 跨域问题——学习ing

    问题 跨域:我写了一个页面,在js中写了请求,这个请求的url跟我这个页面不在一个域名,那么这个请求就是跨域请求. 跨域会怎么样:没见过,可能就不让你请求呗,为了安全考虑之类的.(涉及浏览器的同源策略 ...

  7. Ajax跨域:Jsonp原理解析

    推荐先看下这篇文章:JS跨域(ajax跨域.iframe跨域)解决方法及原理详解(jsonp) JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重 ...

  8. JSONP跨域的原理解析( 一种脚本注入行为)

    JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制, 被称为“some-Origin Policy”(同源策略).这一策略对于Jav ...

  9. ajax跨域原理以及解决方案

    说明 跨域主要是由于浏览器的“同源策略”引起,分为多种类型,本文主要探讨Ajax请求跨域问题 前言 强烈推荐阅读参考来源中的文章,能够快速帮助了解跨域的原理 参考来源 本文参考了以下来源 浏览器同源政 ...

随机推荐

  1. 1421 - Wavio Sequence

    题目大意:求一个序列中 先严格递增后严格递减的子序列的数目(要求这个子序列对称). 题目思路:正一遍DP,反一遍DP,因为n<=1e5,dp要把时间压缩到nlogn #include<st ...

  2. 启动项目时,mapper.xml文件没有导入

    原因分析:绑定的statement没有发现,原因是只有mapper接口的java文件,没有xml文件 解决方法:需要在pom文件中进行配置 <!-- 如果不添加此节点mybatis的mapper ...

  3. 快速搭建ELK日志分析系统

    一.ELK搭建篇 官网地址:https://www.elastic.co/cn/ 官网权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/ ...

  4. python目标定位(借鉴csdn上大神)

    写博客是为了记录下来,毕竟好多东西记不住,看过就忘了,收藏又太多,还不如搬运到自己博客下面,随时可翻~~~ 近期再学目标识别与定位,看着原理都很简单,但是真自己做,又觉得困难重重. csdn上一个大神 ...

  5. C++写文件

    头文件 ofstream -- 向文件写内容 实现代码 #include <vector> #include <string> #include <fstream> ...

  6. RocketMQ 简单梳理 及 集群部署笔记【转】

    一.RocketMQ 基础知识介绍Apache RocketMQ是阿里开源的一款高性能.高吞吐量.队列模型的消息中间件的分布式消息中间件. 上图是一个典型的消息中间件收发消息的模型,RocketMQ也 ...

  7. 学习awk命令的使用

    作者:邓聪聪 awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 awk处理过程: 依次对每一行进行处理,然后输出 awk命令形式: ...

  8. LaTeX公式中的空格

    两个quad空格 a \qquad b 两个m的宽度 quad空格 a \quad b 一个m的宽度 大空格 a\ b 1/3m宽度 中等空格 a\;b 2/7m宽度 小空格 a\,b 1/6m宽度 ...

  9. 运维与自动化系列④自动化部署基础与git

    运维与自动化系列④自动化部署基础与git 自动化部署基础与git 一:上一篇的代码是保存在本地,但是在生产环境当中是由版本控制进行代码管理,以便于发布代码和回滚,一般是使用gitlib比较多,另外还有 ...

  10. mina使用总结

    1.在会话中获得远程IP和端口 @Override public void messageReceived(IoSession session, Object message) throws Exce ...