第一部分:項目前期準備
一、Django 現狀
1、Django開發前景
1.1 Django的厲害之處
- 在python中,與web開發環境相關的包有13045個
- django就佔了9091個,大約70%
- 在python中,活躍的web框架多達54個,其中最活躍的有,Django,Flask,Pyramid,Zope
- 最受歡迎的就是Django,沒有之一
- 超過5263箇中大型網站使用Django開發
1.2 哪些公司在使用Django?
- 國內:豆瓣、知乎
- 國外:Instagram、Mozilla、Pinterest、Disqus、National Geographic、NASA
2、版本
- 1.11(2017年4月發佈,支持python2.7,在2020全面推行python3之後,將不再提供服務)
- 2.0-2.1(2.0版本,2017年12月發佈,只支持python3,將長期支持,向下兼容)
- 2.0主要在一下方面做了改進:
- 簡化url路由語法
- 更友好的admin站點
- auth支持更高強度的加密算法(PBKDF2)
- runserver支持HTTP 1.1
二、開發流程
本項目,我們會盡量模擬真實web開發場景來開發項目,讓我們體驗在開發團隊中工作一般的快感!
開發流程圖如下圖所示:
三、需求分析
1、網站類型
本項目主要完成一個個人新聞博客類網站,用於知識分享,交友互動等
2、主頁模塊
- 輪播圖
- 熱門文章推薦
- 文章標籤、文章列表(可加載更多)
- 左側廣告展示
- 個人聯繫方式
3、用戶模塊
- 註冊
- 短信驗證碼(雲通信平臺)
- 圖片驗證碼
- 登錄
- 用戶名和手機號登錄
- 第三方登錄(可能會拓展QQ、微信登錄等)
- 個人中心頁
4、在線視頻模塊
實現在線播放視頻功能,用於福利課視頻展示等。
5、文件下載模塊
實現相關資源共享,如課件筆記等。
6、搜索模塊
使用流行的elasticsearch搜索引擎框架,實現網站資源快速搜索定位功能。
7、後臺管理模塊
- 文章標籤管理
- 文章發佈
- 文章管理
- 熱門文章管理
- 主頁輪播圖管理
- 課程發佈
- 文檔上傳
- 賬號管理
四、項目架構
1、網站開發模式
前後端部分分離的開發模式
拓展:網站開發模式兩種方式!
(1)前後端不分離:
請求的數據交互如下圖:
(2)前後端分離:
在前後端分離的應用模式中,我們通常將後端開發的每個視圖都稱爲一個接口,或者API,前端通過訪問接口來對數據進行增刪改查。
對應的數據交互如下圖 :
2、前端技術
html + css + js + jquery(ajax)
3、後端技術
Django2.1 + Django restframework(一種設計風格/規範) + mysql + redis + celery(可能會拓展) + elaticsearch + nginx + uwsgi
第二部分:Git
一、爲什麼要使用Git?
1.傳統文檔管理
在我們寫畢業論文時可能會遇到,多次修改之後的論文命名方式:
論文_改.doc、論文_改改.doc、論文_改改改.doc、論文_改改改改.doc、論文_改改改改再改.doc、論文_改改改改再改TM不改了.doc
2.源代碼管理的好處
- 方便多人協同開發
- 方便版本控制
3.Git的誕生
- 作者Linux之父:Linus Torvalds
- git開發目的:爲了輔助Linux內核的開發
- 是Linus被逼無奈,花了2個星期用c寫的
- 2008年,GitHub網站上線,爲開源項目免費提供Git存儲,無數開源項目開始遷移至GitHub
- Git迅速成爲最流行的分佈式版本控制系統(沒有之一)
二、Git結構
Git是分佈式管理系統。服務端和客戶端都有版本控制功能,都能進行代碼的提交,合併,修改
圖一
圖二
三、本地倉庫操作
1.安裝git
- ubuntu下安裝
sudo apt-get install git - windows下安裝(本人使用)
gitforwindows官網
點擊下載
2.查看是否安裝成功
git --version
3.創建本地倉庫
-
創建一個文件夾用於存放項目文件(myporject)
-
新建本地倉庫
cd ~/myproject/
# 初始化
git init
# 會創建一個.git的隱藏文件,關於版本控制的文件都存放在這裏,絕對不要改動
-
配置個人信息
# 配置全局信息(怎樣設置無所謂,因爲不需要使用;一臺電腦設置一下即可!)
git config --global user.name 'cool'
git config --global user.email '[email protected]'
# 配置信息會保存在家目錄下
~/.gitconfig
# 配置本項目個人信息(注意:一定要認真設置,和我們遠程提交的終端設置的要一模一樣,不然會提交失敗;而且每搞一個項目都要配置一下哦!比如:咱後面會上傳到碼雲到!)
git config user.name 'cool2'
git config user.email '[email protected]'
# 配置信息存儲在當前目錄下的.git/config下
4.添加文件
創建好了本地倉庫,就準備開始開發了。
在項目文件加下創建readme.txt文件,輸入以下內容。(注意:現在這個txt文件處於工作區中)
這是一個git學習的項目。
使用命令git status可以發現,此txt文件標紅,意思就是我們需要使用git add命令將其提交:
將文件添加到代碼庫分兩步
-
先添加到暫存區
git add readme.txt
-
提交到倉庫
git commit -m ‘這是一個文本文件’
git commit命令的-m參數後輸入的內容是提交說明。命令執行成功後顯示幾個文件被改動,加了多少行。每提交一次就會生成一個版本。
按照這個操作流程,修改readme.txt內容如下
這是一個git學習的項目。
千里之行始於腳下。
git add . 可以一次性把當前目錄中所有有改動的文件都添加到暫存區。
小插曲:因爲編碼方式的不同可能會出現亂碼。
解決方法:
打開你的終端,依次輸入以下命令:
$ git config --global core.quotepath false # 設置 git status utf-8編碼
$ git config --global gui.encoding utf-8 # 設置Git GUI界面utf-8編碼
$ git config --global i18n.commit.encoding utf-8 #設置commit信息utf-8編碼
$ git config --global i18n.logoutputencoding utf-8 # 設置輸出 log utf-8 編碼
5.歷史版本
辛勤的工作一段時候,我們提交了很多次了,有很多的版本,怎麼查看這些提交記錄呢?
git log (只能查看歷史版本)
git reflog (可以查看所有版本!)
git reflog可以查看所有分支的所有操作記錄(包含已刪除的commit記錄)。
git log不能查看已刪除的commit記錄。
6.版本回退
- git reset --hard HEAD^
- HEAD表示當前最新版本
- HEAD^表示當前最新版本的前一個版本
- HEAD^^表示當前最新版本的前兩個版本,以此類推
- HEAD~1表示當前最新版本的前一個版本
- HEAD~8表示當前最新版本的前8個版本,以此類推
- git reset --hard 版本號
當版本非常多時選擇這種方法。版本號就是每次commit生成的hash值,只用取前幾位數。
7.撤銷修改
運行git status命令會顯示當前工作區,暫存區,倉庫的狀態。當工作區的所有代碼都提交到倉庫,並和倉庫保持一致時會顯示:
On branch master
nothing to commit, working tree clean
一旦有修改,git status命令會顯示改動的文件,以及你應該怎麼提交這些修改。
- 撤銷工作區代碼
git checkout 文件名
修改文件後沒有執行add,運行此命令可以撤銷所有修改,一旦撤銷沒有後悔藥哦,在確定拋棄所有修改時使用。 - 撤銷暫存區的代碼
# 第一步:將暫存區代碼撤銷到工作區
git reset HEAD 文件名
# 第二步:撤銷工作區代碼
git checkout 文件名
8.對比文件
- 對比本地倉庫與工作區
git diff HEAD – 文件名 - 對比本地倉庫個版本代碼
git diff HEAD HEAD^ – 文件名
9.文件刪除
- 刪除沒有添加進版本庫中的工作區中的文件
# 直接刪除不用做任何操作 - 刪除已添加進工作區但沒有提交的文件
# 1.先撤回工作區
git reset HEAD 文件名
# 2.直接刪除
rm 文件名 - 已提交到版本庫
# 1.刪除文件
rm 文件名
# 2.運行 git add .
git add .
# 3.提交
git commit -m ‘delete some file’
四、遠程倉庫
要實現多人協作分工,就需要git服務端。對於我們學習來說,自己去搭建一個服務端太費事,再說你寫的代碼也不是啥國家戰略祕密,不用擔心給別人看到了。前文提到了github網站,它就是一個git服務端,最重要的是不要錢,很多開源項目都託管在它的上面了。但是它的服務器在境外,國內訪問比較緩慢,好消息是,國內也成立了一個網站叫碼雲不是馬雲,學習git可以通過這個網站,很多國內項目也開始託管在碼雲上了。
不管是是使用github還是使用碼雲,步驟是差不多的,區別是github是全英文的慢一點。這裏以碼云爲例。
首先你需要註冊一個碼雲的賬戶,然後創建一個空的倉庫。這個在碼雲上有教程大家自行操作。
創建好倉庫後,你的倉庫會有兩個地址,一個是https,一個是ssh。因爲使用https需要輸入用戶名和密碼,推薦使用ssh的方式。要使用ssh你需要設置你賬戶的ssh公鑰。公鑰管理
要把本地倉庫和遠程倉庫聯繫起來有兩種方式:
1.添加遠程倉庫
- 克隆
遠程倉庫裏已經存在項目文件,你買了臺新電腦,需要將項目從遠程倉庫clone(克隆)到本地進行工作。
# 首先cd到你要存放項目的目錄
cd ~/projects
# 然後運行下面的命令
git clone [email protected]:用戶個性地址/name.git - 本地初始化一個倉庫,設置遠程倉庫地址後再做push
和第一種方式的區別在於先創建倉庫
git init # 創建倉庫
git remote add origin [email protected]:用戶個性地址/name.git
2.推送到遠程倉庫
當本地工作完成,需要將代碼推送到遠程倉庫,使用git push命令
git push origin master
3.從遠程倉庫拉取更新到本地倉庫
你的同事和你協同開發,他工作的那部分內容完成了,並且已經推送到遠程倉庫,你接下來的工作需要依賴他的那部分代碼,那麼你需要將遠程倉庫代碼拉取到本地倉庫,使用git pull命令
git pull origin master
實踐:使用碼雲,在遠程中新建倉庫後按如下命令在本地項目文件夾下Git操作如下命令即可!
刷新界面可發現已經將本地代碼推送到了遠程倉庫:
五、分支管理
正常的開發項目中都是多人協作,每個人的任務一般不會一天就完成,如果把沒有完成的代碼提交到遠程倉庫會影響被人工作。git提供了分支的功能就不用擔心了,可以創建一個自己的分支,在上面幹活,想提交就提交,等到工作完成再一次性合併到原來的分支。
1.創建分支
新建git倉庫時會默認創建一個分支master,它叫主分支。一般情況我們不會直接在主分支上幹活,它主要用來發布版本。
創建一個開發分支develop
git branch develop
再切換到develop分支
git checkout develop
顯示如下:
Switched to branch 'develop'
這兩條命令也可以通過一條命令來實現
git checkout -b develop
-b參數表示創建並切換。
使用git branch命令查看當前分支(*表示正在使用的分支)
git branch
* develop
master
2.合併分支
創建好develop分支後,你開始幹活,完成上級領導交給你的任務,根據用戶的手機殼顏色更換app主題,5分鐘之後開發完畢,提交:
$ git add change_theme.py
$ git commit -m 'complete change theme'
經過測試功能完成,現在我們要合併到master分支
首先切換到master
$ git checkout master
Switched to branch 'master'
查看工作區,你會發現剛纔開發的功能文件沒有了,不要驚慌,因爲那個提交是在develop分支上,現在我們把develop分支的工作合併到master分支上:
$ git merge develop
Updating 7173db6..5b83e32
Fast-forward
change_theme.py | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 change_theme.py
git merge命令用於合併指定分支到當前分支。合併後,在查看文件夾發現,change_theme.py文件又回來了。
3.刪除分支
合併完之後你也可以刪除掉develop分支:
$ git branch -d develop
Deleted branch develop (was 5b83e32).
$ git branch
* master