1. 程式人生 > >ContentType&CORS&Git

ContentType&CORS&Git

ContentType

django內建的ContentType元件就是幫我們做連表操作
如果一個表與其他表有多個外來鍵關係,我們可以通過ContentType來解決這種關聯

from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation


class DegreeCourse(models.Model):
    name = models.CharField(max_length=32)


class Course(models.Model):
    name = models.CharField(max_length=32)

    # 資料庫不生成,只用於連結串列查詢
    policy_list = GenericRelation("PricePolicy")


class PricePolicy(models.Model):
    period = models.CharField(max_length=32)
    price = models.FloatField()
    # 課程型別 關聯django自動生成的contenttype表
    content_type = models.ForeignKey(ContentType)  
    object_id = models.PositiveIntegerField()
    # 不在資料庫中生成,只用於幫助你做資料操作
    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

<body>
    <h3>CORS示例</h3>
    <button type="button" onclick="getData()" >獲取第三方資料</button>
 
    <script src="/static/jquery-3.2.1.js"></script>
    <script>
    function getData() {
        $.ajax({
            url:'http://127.0.0.1:8000/cors_data/',
            type:'GET',   // 請求方式:HEAD、GET、POST為簡單請求
            headers:{'name':'joe1991'},   //有請求頭的複雜請求
            success:function (arg) {
                var $tag = $('<h6>');
                $tag.text(arg);
                $('h3').append($tag);
                }
            })
        }
    </script>   
</body>

第三方服務端views.py

def cors_data(request):
    if request.method == 'OPTIONS':
        # 預檢
        obj = HttpResponse()
        obj['Access-Control-Allow-Origin'] = " http://127.0.0.1:8001"
        obj['Access-Control-Allow-Headers'] = 'name'    #處理方式不同
        # obj['Access-Control-Allow-Methods'] = "PUT"
        return obj
    else :
        obj = HttpResponse('第三方資料')
        obj['Access-Control-Allow-Origin'] = " http://127.0.0.1:8001"
        return obj

區別

JSONP:主要修改在前端部分,後端需做約束脩改,發jsonp請求
JSONP:只能發GET請求
CORS:前端的程式碼不用修改,服務端的程式碼需要修改
CORS:可以發任意請求,簡單請求與複雜請求處理方式不同

Git

工作區:當前開發程式所在目錄稱為工作區,即:工作開發都是在該目錄,該區域的檔案會有狀態的變化且狀態由git自動檢測,如果程式中檔案做任何操作(增、刪、改),檔案狀態均會被檢測到,可以使用 【git status】命令檢視

版本庫:工作區檢測到有檔案發生變化,那麼意味著較上一個版本之後對程式進行了修改,修改完成之後,可以當做下一版本進行提交,那麼就是執行 【git add .】 將所有檔案提交到暫存區,然後再執行【git commit -m '又一個版本'】提交到版本庫的分支即可,之後可以使用【git log】命令檢視版本記錄

某個資料夾中的內容進行版本管理:
進入資料夾,右鍵git bash
git init 初始化,當前所在的資料夾可以被管理且以後版本相關的資料都會儲存到.git檔案中
git status 檢視當前資料夾以及子目錄中檔案是否發生變化:內容修改/新增檔案/刪除,已經變化的檔案會變成紅色,已經add的檔案會變成綠色
git add .  給發生變化的檔案(貼上一個標籤)或 將發生變化的檔案放到某個地方,只寫一個句點符就代表把git status中紅色的檔案全部打上標籤
git commit -m '新增使用者登入認證功能以及xxx功能' 將“綠色”檔案新增到版本中
git log 檢視所有版本提交記錄,可以獲取版本號
git reset --hard 版本號   將最新的版本回退到更早的版本
git reflog   回退到之前版本後悔了,再更新到最新或者最新之前的版本
git reset --hard 版本 回退    

BUG修復

1.stash

stash用於將工作區發生變化的所有檔案獲取臨時儲存在“某個地方”,將工作區還原當前版本未操作前的狀態;stash還可以將臨時儲存在“某個地方”的檔案再次拿回到工作區。

git stash             將當前工作區所有修改過的內容儲存到“某個地方”,將工作區還原到當前版本未修改過的狀態
git stash list        檢視“某個地方”儲存的所有記錄
git stash clear     清空“某個地方”
git stash pop       將第一個記錄從“某個地方”重新拿到工作區(可能有衝突)
git stash apply     編號, 將指定編號記錄從“某個地方”重新拿到工作區(可能有衝突) 
git stash drop      編號,刪除指定編號的記錄

2.branch

branch稱為分支,預設僅有一個名為master的分支。一般開發新功能流程為:開發新功能時會在分支dev上進行,開發完畢後再合併到master分支。

git branch 分支名稱             建立分支
git checkout 分支名稱          切換分支
git branch -m 分支名稱        建立並切換到指定分支
git branch                          檢視所有分支
git branch -d 分支名稱         刪除分支
git merge 分支名稱              將指定分支合併到當前分支

遠端管理

git pull origin maste 
git 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

相關推薦

ContentType&CORS&Git

ContentType django內建的ContentType元件就是幫我們做連表操作 如果一個表與其他表有多個外來鍵關係,我們可以通過ContentType來解決這種關聯 from django.db import models from django.contrib.contenttypes.model

跨域,CORScontentType

objects 文件 mod 實現 lte resp png quest 發送 一 . 跨域 域名,協議,端口有一個不一樣都是跨域,簡單的解釋一下,,你從你從端口號為8000去請求8001的數據就是跨域.如果想解決跨域問題,需要瀏覽器同時支持,我們這裏用CORS(Cr

git使用總結

ash war with 搭建 git服務器 quest 配置文件 username 下使用 一、安裝 $ sudo apt-get install git ubuntuxia windows下使用msysgit 二、使用 1.配置   $git config -

常用 Git 命令清單

stage 遠程倉庫 spa reset 一行 發生 per pan comm 下面是我整理的常用 Git 命令清單。幾個專用名詞的譯名如下。 Workspace:工作區 Index / Stage:暫存區 Repository:倉庫區(或本地倉庫

跨域資源共享CORS詳解

附加 accep 不發送 地址 code 克服 通信 數據 ror 簡介 CORS是一個W3C標準,全稱是"跨域資源共享"(Cross-origin resource sharing)。 它允許瀏覽器向跨源服務器,發出XMLHttpRequest請求,從而克服了AJAX

git本地分支管理

master diff mas 命名 創建 out git diff 創建分支 合並 查看分支:git branch創建分支:git branch dev重命名分支:git branch -m dev dev1刪除分支:git branch -d dev切換分支:git c

git上只做文件大小寫重命名的修改時,如何躲坑

function http ner ips %20 error: ace mbed lips 一、 提交時 假設修改ABC.java為Abc.java。 1.1 如果使用git命令進行僅涉及大小寫的重命名 1.1.1 設置git庫為大小寫敏感(不建議) $

Git 問題總結

gin user 沖突 windows 技術分享 tac 意思 ted wid 打開eclipse中的windows-->Preferences-->Team-->Git-->Configuration-->User Settings.然後點A

git安裝 編譯安裝

git一、安裝依賴 yum update -y #可以不做 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker wget https://github.c

基於GitLab與Git Extensions搭建版本控制工具

基本 cmd img html nat 需求 無法 spa hang 1.背景   大家知道GitHub是現在非常流行的代碼托管工具,但是如果有些項目不想開源的話,則需要付費,因此萌生了自己搭建一個Git的版本控制工具,供內網使用。GitLab則是個好的選擇,但是GitL

git-tag

png branch light ranch 記錄 strong ges -- git 首先為什麽學習git的tag?第一、web前端更新太快了,而有些開發不是那麽急於追新,github上為保留過去的版本,所以用上了tag,當然,你會說用branch?我得搞清一個開源項目是

git clone遠程branch和tag

oca lar -- rac master 文件目錄 targe 錯誤 先後 接著上一個筆記講,我們想從remote repository上獲取某個branch的某個tag。這句可以理解為,以angular,我們想獲得angular的angular1的v.0.1.1的版本。

Git介紹,安裝,Git+Git flow使用

span mon 緊急 sna initial setup cto 快速 oca 特點:   1.可以快速的切換項目分支.  2.回滾某個分支的版本.  3.每次切換分支不用修改配置文件 (因項目而定義)  4.不用 新建/切換 虛擬目錄/域名.因為都是在同一個目

解決Problem with writing the data, class java.util.ArrayList, ContentType: application/xml

writing 數據庫 今天,在使用cxf讀取內網數據庫的數據時,報以下一個錯誤Problem with writing the data, class java.util.ArrayList, ContentType: application/xml以上錯誤提示我們,在寫入數據時有錯誤,最後經檢查

git體驗

cat details ppi pin perm object ocr 技術 1.0 (1)git初始化配置#配置用戶名git config --global user.name "azcode"#配置郵箱git config --global user.email

Windows下快速安裝Xgboost(無需Git或者VS)

nor port 最終 比賽 http 無需 windows git 到你 xgboost的全稱是eXtreme Gradient Boosting,現在已經風靡Kaggle、天池、DataCastle、Kesci等國內外數據競賽平臺,是比賽奪冠的必備大殺器!如果

Git系列三之在線GitHub使用方法

git repo div ssh bsp repos initial finger com root 代碼托管地址:https://github.com 一、認證方式 1、https方式:不需要認證 [[email protected]/* */

git 提交新項目,並修改用戶名以及提交郵箱  

github php 本地有一個項目myweb,裏面有.git目錄。線上新建了git倉庫,gitweb。現在要把myweb提交到線上。直接在myweb目錄下,以免沖突,提交不了。所以我用了copy的方法。1.先把項目myweb的 .git目錄,刪除。 2.在/data目錄下,git clone線上的倉庫

git 命令

安裝 裏來 checkout 行合並 del 等等 table date -- 安裝git後我們需要配置一下,告訴git我們的基本信息等等..一般在用戶範圍內去配置 git ,也就是在 global 範圍。 global 全局設置 $ git config

git clone 某個分支或者所有分支

tps 分支 git clone http dev bsp branch ade .net clone 某個分支: git clone -b dev5 https://git.coding.net/aiyongbao/tradepc.git trade