ContentType&CORS&Git

ContentType

django內置的ContentType組件就是幫咱們作連表操做
若是一個表與其餘表有多個外鍵關係,咱們能夠經過ContentType來解決這種關聯html

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.htmljquery

<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.pygit

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

區別ajax

JSONP:主要修改在前端部分,後端需作約束脩改,發jsonp請求
JSONP:只能發GET請求
CORS:前端的代碼不用修改,服務端的代碼須要修改
CORS:能夠發任意請求,簡單請求與複雜請求處理方式不一樣

Git

工做區:當前開發程序所在目錄稱爲工做區,即:工做開發都是在該目錄,該區域的文件會有狀態的變化且狀態由git自動檢測,若是程序中文件作任何操做(增、刪、改),文件狀態均會被檢測到,可使用 【git status】命令查看數據庫

版本庫:工做區檢測到有文件發生變化,那麼意味着較上一個版本以後對程序進行了修改,修改完成以後,能夠當作下一版本進行提交,那麼就是執行 【git add .】 將全部文件提交到暫存區,而後再執行【git commit -m '又一個版本'】提交到版本庫的分支便可,以後可使用【git log】命令查看版本記錄django

某個文件夾中的內容進行版本管理:
進入文件夾,右鍵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還能夠將臨時存儲在「某個地方」的文件再次拿回到工做區。json

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

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息