ContentType&CORS&Git

ContentType

django内置的ContentType组件就是帮我们做连表操作
如果一个表与其他表有多个外键关系,我们可以通过ContentType来解决这种关联

1from django.db import models 2from django.contrib.contenttypes.models import ContentType 3from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation 4 5 6class DegreeCourse(models.Model): 7 name = models.CharField(max_length=32) 8 9 10class Course(models.Model): 11 name = models.CharField(max_length=32) 12 13 # 数据库不生成,只用于链表查询 14 policy_list = GenericRelation("PricePolicy") 15 16 17class PricePolicy(models.Model): 18 period = models.CharField(max_length=32) 19 price = models.FloatField() 20 # 课程类型 关联django自动生成的contenttype表 21 content_type = models.ForeignKey(ContentType) 22 object_id = models.PositiveIntegerField() 23 # 不在数据库中生成,只用于帮助你做数据操作 24 content_object = GenericForeignKey('content_type', 'object_id')

CORS

即:跨域资源共享(CORS,Cross-Origin Resource Sharing),其本质是设置响应头,使得浏览器允许跨域请求 复杂请求在发送真正的请求前,会先发送一个OPTIONS请求,第三方服务端先”预检“一下,”预检“通过才会发送正式数据。

  • “预检”请求时,允许请求方式则需服务器设置响应头:Access-Control-Request-Method
  • “预检”请求时,允许请求头则需服务器设置响应头:Access-Control-Request-Headers
  • “预检”缓存时间,服务器设置响应头:Access-Control-Max-Age

带请求头的复杂请求

客户端cors.html

1<body> 2 <h3>CORS示例</h3> 3 <button type="button" onclick="getData()" >获取第三方数据</button> 4 5 <script src="https://my.oschina.net/static/jquery-3.2.1.js"></script> 6 <script> 7 function getData() { 8 $.ajax({ 9 url:'http://127.0.0.1:8000/cors_data/', 10 type:'GET', // 请求方式:HEAD、GET、POST为简单请求 11 headers:{'name':'joe1991'}, //有请求头的复杂请求 12 success:function (arg) { 13 var $tag = $('<h6>'); 14 $tag.text(arg); 15 $('h3').append($tag); 16 } 17 }) 18 } 19 </script> 20</body>

第三方服务端views.py

1def cors_data(request): 2 if request.method == 'OPTIONS': 3 # 预检 4 obj = HttpResponse() 5 obj['Access-Control-Allow-Origin'] = " http://127.0.0.1:8001" 6 obj['Access-Control-Allow-Headers'] = 'name' #处理方式不同 7 # obj['Access-Control-Allow-Methods'] = "PUT" 8 return obj 9 else : 10 obj = HttpResponse('第三方数据') 11 obj['Access-Control-Allow-Origin'] = " http://127.0.0.1:8001" 12 return obj

区别

1JSONP:主要修改在前端部分,后端需做约束修改,发jsonp请求 2JSONP:只能发GET请求 3CORS:前端的代码不用修改,服务端的代码需要修改 4CORS:可以发任意请求,简单请求与复杂请求处理方式不同

Git

**工作区:**当前开发程序所在目录称为工作区,即:工作开发都是在该目录,该区域的文件会有状态的变化且状态由git自动检测,如果程序中文件做任何操作(增、删、改),文件状态均会被检测到,可以使用 【git status】命令查看

**版本库:**工作区检测到有文件发生变化,那么意味着较上一个版本之后对程序进行了修改,修改完成之后,可以当做下一版本进行提交,那么就是执行 【git add .】 将所有文件提交到暂存区,然后再执行【git commit -m '又一个版本'】提交到版本库的分支即可,之后可以使用【git log】命令查看版本记录

1某个文件夹中的内容进行版本管理: 2进入文件夹,右键git bash 3git init 初始化,当前所在的文件夹可以被管理且以后版本相关的数据都会存储到.git文件中 4git status 查看当前文件夹以及子目录中文件是否发生变化:内容修改/新增文件/删除,已经变化的文件会变成红色,已经add的文件会变成绿色 5git add . 给发生变化的文件(贴上一个标签)或 将发生变化的文件放到某个地方,只写一个句点符就代表把git status中红色的文件全部打上标签 6git commit -m '新增用户登录认证功能以及xxx功能' 将“绿色”文件添加到版本中 7git log 查看所有版本提交记录,可以获取版本号 8git reset --hard 版本号 将最新的版本回退到更早的版本 9git reflog 回退到之前版本后悔了,再更新到最新或者最新之前的版本 10git reset --hard 版本 回退

BUG修复

1.stash

stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态;stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。

1git stash 将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态 2git stash list 查看“某个地方”存储的所有记录 3git stash clear 清空“某个地方” 4git stash pop 将第一个记录从“某个地方”重新拿到工作区(可能有冲突) 5git stash apply 编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) 6git stash drop 编号,删除指定编号的记录

2.branch

branch称为分支,默认仅有一个名为master的分支。一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支。

1git branch 分支名称 创建分支 2git checkout 分支名称 切换分支 3git branch -m 分支名称 创建并切换到指定分支 4git branch 查看所有分支 5git branch -d 分支名称 删除分支 6git merge 分支名称 将指定分支合并到当前分支

远程管理

1git pull origin maste 2git push origin maste

协同开发

先 git pull origin master 然后 git push origin master 先 git fetch origin master 然后 git merge origin/master 再 git push origin master 先 git fetch origin master 然后 git rebase origin/master 再 git push origin master

参考链接: 123

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )