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,Cross-Origin Resource Sharing),其本質是設置響應頭,使得瀏覽器容許跨域請求
複雜請求在發送真正的請求前,會先發送一個OPTIONS請求,第三方服務端先」預檢「一下,」預檢「經過纔會發送正式數據。前端
客戶端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 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 版本 回退
stash用於將工做區發生變化的全部文件獲取臨時存儲在「某個地方」,將工做區還原當前版本未操做前的狀態;stash還能夠將臨時存儲在「某個地方」的文件再次拿回到工做區。json
git stash 將當前工做區全部修改過的內容存儲到「某個地方」,將工做區還原到當前版本未修改過的狀態 git stash list 查看「某個地方」存儲的全部記錄 git stash clear 清空「某個地方」 git stash pop 將第一個記錄從「某個地方」從新拿到工做區(可能有衝突) git stash apply 編號, 將指定編號記錄從「某個地方」從新拿到工做區(可能有衝突) git stash drop 編號,刪除指定編號的記錄
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跨域